- proširiti semafore i monitore pozivima:
sem_trywait
ipthread_mutex_trylock
- dodati zaključavanje radnim čekanjem:
pthread_spin_init/destroy/lock/trylock/unlock
- dodati zaključavanje čitaj/piši:
pthread_rwlock_init/destroy/rdlock/wrlock/unlock
man pthread_rwlock_init
).
Napisati programe s barem dvije dretve koje demonstriraju korištenje navedena sučelja. Za svako sučelje mogu biti druge dretve.
Dodatak
Preporuka je raditi u 07/07 (Chapter_07_Threads/07_Simple_RR
), barem drugi dio zadatka (pthread_spin_init/destroy/lock/trylock/unlock
). Naime, u 07/06 koristi se prioritetno raspoređivanje a obzirom da će u primjeru vjerojatno sve dretve imati isti prioritet, ako se dogodi da je jedna dretva prošla spin_lock
(i tamo simulira neki malo duži rad s sleep) kad druga dretva pozove spin_lock
ona će zauzeti procesorsko vrijeme i nitko ju neće maknuti -- niti ona dretva koja je probuđena nakon spavanja. Zato se preporuča da se koristi 07/07 koji ima (vrlo jednostavan) raspoređivač podjelom vremena koji će omogućiti dretvi koja je zauzela ključ da nastavi kasnije i izađe iz kritična odsječka ("otključa").