Ślad: • profiler_lab • en • 08_lab • threads2

Synchronizacja wątków

Writing /home/grochu/public_html/wiki/data/cache/e/e586a714af50a1bef943c87be2f5b9bd.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/e/e586a714af50a1bef943c87be2f5b9bd.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/0/0aecd8a88c64b13ce195ddd4cc45b8f9.i failed
Writing /home/grochu/public_html/wiki/data/cache/0/0aecd8a88c64b13ce195ddd4cc45b8f9.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/e/e586a714af50a1bef943c87be2f5b9bd.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/5/54833d99260c996c979a12bbe574f33c.xhtml failed

Synchronizacja wątków

Zadanie 1 - Komunikator tekstowy z wieloma klientami c. d.

Rozszerz aplikację z poprzednich zajęć w następujący sposób:

  • w momencie wyczerpania wszystkich możliwych połączeń wątek główny serwera czeka na zakończenie przynajmniej jednego z wątków odpowiedzialnych za połączenia z klientami. Dopiero wtedy możliwe staje się ponowne zaakceptowanie nowego połączenia. Wykorzystaj w tym celu funkcję WaitForMultipleObjects
  • po uruchomieniu serwera przyciskiem Run ten sam przycisk pozwala wyłączyć serwer. W momencie wyłączenia serwera do wszystkich połączonych klientów prześlij komunikat pożegnalny i zakończ wątki odpowiedzialne za połączenia oraz wątek główny serwera. Do komunikacji między wątkami wykorzystaj zdarzenia. Przydatne funkcje:
  • zabezpiecz dane modyfikowane przez wątki tak aby wyłącznie jeden wątek mógł modyfikować i odczytywać współdzielone zasoby (np. zmienne globalne). Wykorzystaj w tym celu sekcje krytyczne. Przydatne funkcje:

Uruchom aplikację w debuggerze Visual Studio i prześledź działanie wątków oraz możliwości VS w śledzeniu działania aplikacji wielowątkowych.

Źródła: