Hazardzisci ----------- Zsynchronizowac prace N graczy i krupiera za pomoca mechanizmow dostarczanych przez biblioteke watkow. Kazdy gracz jest watkiem, ktory dziala w petli wedlug nastepujacego algorytmu: 1) spi przez losowy czas; 2) zglasza sie do gry; jesli jest juz komplet zgloszen lub toczy sie jeszcze poprzednia tura gry, to czeka na zakonczenie tury; 3) czeka na rozpoczecie tury; 4) losuje jedna liczbe calkowita z zakresu 1-liczba graczy w tej turze; 5) czeka az krupier wybierze zwyciezce. Krupier jest watkiem, ktory dziala w petli nastepujaco: 1) czeka az przy stole uzbiera sie pieciu graczy lub minie limit czasu; jesli po uplywie limitu czasu do gry nie zglosil sie nikt, to krupier ponownie zasypia; 2) rozpoczyna kolejna ture gry i czeka az wszyscy gracze dokonaja losowania; 3) rozstrzyga kto wygral; zwyciezca jest ten, kto wylosowal najwieksza liczbe, a w przypadku, gdy takich graczy jest wiecej, decyduje kolejnosc w jakiej gracze rozpoczynali (NIE: zglaszali sie!) ture, zgodnie z zasada, kto pierwszy ten lepszy; 4) konczy ture. Twoj program powinien: 1) utworzyc watek krupiera i N watkow graczy (N jest pierwszym argumentem wywolania programu); 2) Wyswietlac na standardowe wyjscie diagnostyczne komunikaty, pozwalajace okreslic, co aktualnie robi kazdy z graczy (czeka na kolejna ture, czeka na rozpoczecie tury, losuje, czeka na wynik, itp.); 3) Po M rozgrywkach (M jest drugim argumentem wywolania programu) zakonczyc dzialanie wszystkich watkow i wypisac, kto ile razy gral i ile razy wygral. Limit czasowy dla krupiera, wyrazony w sekundach, jest trzecim argumentem wywolania programu. Powodzenia. ========================================= Marcin Engel (email: mengel@mimuw.edu.pl) =========================================