[ Riste Pejov @ 31.05.2004. 10:10 ] @
| Imam mali problemcic, sto mozda i nije bas problem ali me nervira do koske.
Ovako, trebam startovati nekoliko threadova, ali ne mogu nikako poslati class method kao funkciski pointer.
Momentalno to radim ovako:
Code:
...
_beginthread(NULL, threadFunc, NULL);
...
void threadFunc(void*)
{
mojObj *obj = new mojObj();
obj->DoStuff();
delete obj;
}
a zeleo bi da to bude ovako:
Code:
...
mojObj *obj = new mojObj();
_beginthread(NULL, obj->DoStuff, NULL);
...
Jos to isto nisam pokusao sa pthreads pod linuxom, ali moram i to u buducnosti.
Znaci dali je ovo moguce uraditi sa MSVC 6. i dali se isto moze uraditi sa pthreads+g++.
R.
|
[ NastyBoy @ 31.05.2004. 13:19 ] @
Ako neka funkcija kao jedan od parametara trazhi i pointer na funkciju koja mora da ima fiksni set argumenata (pa makar bila i "prazna"), obichan metod klase necesh moci da prosledish, zato shto kompajler, u pozadini, tom metodu dodaje i "this" pointer kao jedan od parametara. Zato se kompajler buni - zbog neslaganja u trazhenim parametrima, a koje ti odoka ne vidish.
Najjednostavnije reshenje (ako je moguce primeniti u tvom sluchaju) je da metod klase proglasish za "static" i takvog ga prosledish threadu.
[ Dragi Tata @ 31.05.2004. 13:31 ] @
Uobičajena procedura je da se "this" prosledi kao jedan od parametara funkciji _beginthreadex (postoji jedan parametar opšte namene), pa da se unutar funkcije izvrši kastovanje tog pointera i onda poziv njegove članice.
Pogledaj:
http://www.codeproject.com/cpp/cppforumfaq.asp#cpp_callbacks
[ Riste Pejov @ 01.06.2004. 10:13 ] @
NastyBoy, zaboravih da napomenem da mi static nece pomoci iz X razloga.
Tatice, hvala puno lepo i mnogo ...tekst je bas ono sto sam trazio. Usput nasao sam i ovo (
http://www.codeproject.com/win32/callback_adapter.asp) kao stvarno dobar resurs.
Ipak na kraju sam kod ostavio kako sto je dosad bio ... nema svrhe komplicirati bezpotrebno stvar kada i ovo radi dobro, a imam neki predosecaj da ce mi callback adapteri iskoplicirati stvari kod linux/pthreads porta.
Pozdrav,
[ Dragi Tata @ 01.06.2004. 16:30 ] @
Namerno ti nisam ostavio link na članak sa adapterom (čovek koji ga je pisao je stvarno faca - sad razvija Aspect C++) jer nisam siguran da bi to radilo sa pthread-ovima. Međutim, opšta tehnika koju možeš naći na linku koji sam ti dao sigurno radi u oba slučaja.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.