Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Class method & _beginthread

[es] :: C/C++ programiranje :: Class method & _beginthread

[ Pregleda: 2434 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.77.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Class method & _beginthread31.05.2004. u 10:10 - pre 249 meseci
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.

People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.plus.com



+4 Profil

icon Re: Class method & _beginthread31.05.2004. u 13:19 - pre 249 meseci
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.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.ipt.aol.com



+6 Profil

icon Re: Class method & _beginthread31.05.2004. u 13:31 - pre 249 meseci
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
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.77.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Class method & _beginthread01.06.2004. u 10:13 - pre 249 meseci
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,
People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: Class method & _beginthread01.06.2004. u 16:30 - pre 249 meseci
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.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Class method & _beginthread

[ Pregleda: 2434 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.