[ 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.