[ talentovanolenj @ 27.03.2007. 13:12 ] @
| Pozdrav svima,
1. Pokusavam vec izvestan broj sati/dana da resim i ukomponujem ovo tako da bi svaki savet dobrodosao a kamoli resenje 
Dakle napisao sam ovako:
TThreadFunction threadFunction = ThreadPrivateActions::aFunction((TAny *)this);
const TInt KMinHeapSize = 0x1000;
const TInt KMaxHeapSize = 0x1000000;
RThread().Create(name, threadFunction, KDefaultStackSize, KMinHeapSize, KMaxHeapSize, (void*) this);
Klasa 'ThreadPrivateActions' samo sadrzi f-ju kojoj je "potpis" sledeci: static TInt aFunction(TAny *data) {...blabla...}
Javlja mi kompajlersku gresku:
illegal implicit conversion from 'int' to 'int (*)(void *)'
sto stvarno i jeste ocigledno istina, ali ja ne znam kako da ovo resim, sta da stavim...
2. Usput, da li je uopste sigurno da stavim onaj opseg za heap i deafult stack size za stek?
Thanx,
m.
|
[ nikoladsp @ 27.03.2007. 14:03 ] @
znaci u tvoju klasu koja ce "drzati" thread dodas funkciju:
Code:
//... *.H fajl
...
protected:
static TInt ThreadFunction(TAny *aPtr);
RThread iThread;
TInt iSomeInt;
//... *.CPP fajl
...
void ConstructL() {
...
iSomeInt = 99; // inicijalizacija neke dummy promenljive
_LIT(KThreadName, "Some Thread");
iThread.Create(KThreadName, threadFunction, 4096, KMinHeapSize, 256*KMinHeapSize, &iSomeInt);
iThread.Resume();
}
...
TInt CHelloWorldBasicAppUi::ThreadFunction(TAny *aPtr) {
TInt* i = (TInt*)aPtr; // sada i pokazuje na iSomeInt
return 0;
}
ovo je najseljackija moguca varijanta
poz
[ talentovanolenj @ 29.03.2007. 09:05 ] @
Hvala niskoladsp,ali ovaj predlog mi zestoko menja design pa cu morati jos da razmislim.
Inace, napravio sam malu egzibiciju i doziveo Symbian "prosvetljenje" :)
Ako stavim thread fju van moje klase ThreadPrivateActions kao globalnu i ne static, prosledim taj pointer,
onda create(...) radi, kompajler prolazi. Naravno ovo treba zaista testirati jos.
Ali npr. u WinApi mogu da prosledim static pointer na fju kad otvaram thread, a u Symbianu ne. Ne razumem bas.
Svejedno, ovo mi opet menja design, a takodje je seljacka varijanta. Sad treba da izaberam manje seljacku varijantu :)
Ako neko zna kako bi se ovo moglo efikasnije uraditi, placam pivo !
poz svima,
m.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.