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

Condition funkcije u Windows-u ?

[es] :: C/C++ programiranje :: Condition funkcije u Windows-u ?

[ Pregleda: 4851 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Condition funkcije u Windows-u ?04.05.2003. u 14:53 - pre 254 meseci
Postoje li Win32API funkcije slicne pthread_cond_wait() i pthread_cond_signal() ?
Stopiranje i ponovno pustanje thread-a bez ovih funkcija je veoma riskantno.

Napravio sam neku vrstu simulacije te funkcije, ali...
Code:

cs.leave();    // ovde moze da uleti unlock() (koji je do tada cekao) i otkljuca thread pre nego sto on bude zakljucan.
SuspendThread (pid);
cs.enter();


Postoji resenje da napravim jedan Sleep(100) kod unlock() funkcije, pa da tako budem siguran da je thread sigurno zakljucan, ali verujem da postoji i neko bolje resenje?

Video sam neke Semaphore funkcije, da nije to?
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Condition funkcije u Windows-u ?04.05.2003. u 19:54 - pre 254 meseci
http://www.cs.wustl.edu/~schmidt/win32-cv-1.html
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Condition funkcije u Windows-u ?04.05.2003. u 20:49 - pre 254 meseci
hvala, proucicu ovo

p.s. jos ne verujem svojim ocima ko mi je odgovorio :)
pozdrav leko... onaj SIM 0.8 gadno zeza, ne mogu uopste poruke da ti saljem...
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 00:33 - pre 254 meseci
Pogledao sam clanak.
Resenje 3.1 je pogresno (kao sto i pise), ali je i 3.2 pogresno (iako to ne pise, ili ja nisam zapazio), lepo moze unlock() da otkljuca thread pre nego sto se on zaista zakljuca, bas kao u 3.1.
3.2 ima samo proveru da li je thread otkljucan, uopste ne moze da vidi da li je thread zaista zakljucan, nema mehanizam da spreci race-condition.

Resenje 3.3 je OK, mada su ga ukomplikovali preterano.
Takvo resenje je meni palo na pamet, pre nego sto sam ga video u ovom clanku, samo mnogo mnogo jednostavnije, bez duplog mutex-a.
To resenje nije nista 'novo' sto nisam znao, funkcija za otkljucavanje se ne zavrsava sve dok se thread zaista ne oTkljuca, i to moze da se realizuje uz pomoc samo jedne promeljive, ovako:

Code:

int pthread_cond_signal (...)
{
  [..] // proverava da li je thread zakljucan
  unlocked=0;
  while (unlocked==0)
    ResumeThread (pid);
}

int pthread_cond_wait (...)
{
  [..] // proglasava thread zakljucanim
  cs.leave();
  SuspendThread (pid);
  unlocked=1;
  cs.enter();
  [..] // proglasava thread otkljucanim
}


To je u osnovi to resenje, samo sto su oni ubacili dodatni mutex, pa imaju neki counter... i naravno koriste Event-e, sto ja ne koristim.
U principu, mozda je njihov sors OK ako nekome treba counter i ako neko koristi Event-e, ali meni counter ne treba, i ne koristim Event-e.


E sada, resenje 3.4 je zanimljivo.
U mom Win32API Reference help-u, koji sam uzeo od Delphi-ja 5, pise da SignalObjectAndWait() moze da se koristi za Mutex-e (izmedju ostalog), a o CriticalSections nema ni govora.
U resenju 3.4, funkciju SignalObjectAndWait() koriste bas u kombinaciji sa CS-om !!!
U cemu je fazon?

Nisam probao da li resenje 3.4 zaista radi, pa me interesuje da li su ovi, koji su pisali clanak, proverili to resenje na delu?
Ili je u pitanju prica da MS slucajno ili namerno nije ubacio CS u listi tipova koje ova funkcija prima?
Jos jedna nedokumentovana stvar?
 
Odgovor na temu

6544616a006e
Nadej Kilec
Bukulja

Član broj: 10080
Poruke: 44
*.telia.com

Sajt: www.gnu.org


Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 01:34 - pre 254 meseci
Predraže ti si neki veoma čudan čovek... Pre dva-tri dana pitaš da li (int)1.9 uvek daje 1, a sada duboko zalaziš u Win32 thread model...
---
GNU's Not UNIX
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 01:43 - pre 254 meseci
Zar ti to ne govori samo koliko dečko brzo napreduje? :)
 
Odgovor na temu

jc denton

Član broj: 2358
Poruke: 1705
*.ptt.yu



Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 02:20 - pre 254 meseci
Vidi ga leka - bice ovo vruce leto na ES-u izgleda :)
Salim se, welcome back.
fire, walk with me
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 09:35 - pre 254 meseci
ftp://sources.redhat.com/pub/p...2002-11-04/pthread_cond_wait.c
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Condition funkcije u Windows-u ?05.05.2003. u 14:27 - pre 254 meseci
ja u c++ programiram od 2002., a u C od 2000., nisam uopste pocetnik.
A za (int) pitam jer nigde nisam zapazio pravilo pri zaokruzivanju broja, a trebalo mi zaokruzivanje iskljucivo na dole, a <math.h> funkcije ne bih koristio samo zbog toga, da bezveze linkujem libm....

Hvala leko.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Condition funkcije u Windows-u ?

[ Pregleda: 4851 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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