User Tools

Site Tools


sk2:sockets_concurrency

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
sk2:sockets_concurrency [2026/11/05 23:22] – [poll] jkonczaksk2:sockets_concurrency [2026/11/05 23:24] (current) – [Wiele wątków] jkonczak
Line 12: Line 12:
  
 [[sk2:cpp11_threads|Wątki w C++]] [[sk2:cpp11_threads|Wątki w C++]]
 +
 +Standard POSIX określa czy i jak można wykonywać funkcje współbieżnie z
 +innymi. Dla gniazd TCP można współbieżne wywoływać operacje wejścia/wyjścia
 +na tym samym gnieździe. O ile dla niektórych rodzajów plików standard POSIX
 +określa że operacje wejścia/wyjścia są atomowe (tzn. wywołanie współbieżnie
 +dwóch ''write'' lub dwóch ''read'' wykona najpierw jedno z tych wywołań,
 +potem drugie), o tyle dla gniazd nie ma takiej gwarancji.
 +\\
 +Trzeba pamiętać, że często operacje wejścia/wyjścia mogą odczytać czy wysłać 
 +mniej danych niż żądał programista, więc zwykle i tak synchronizacja
 +(przynajmniej odbierania) na tym samym gnieździe jest konieczna.
 +\\
 +Zamknięcie połączenia TCP z jednego wątku przerywa operacje czekające na
 +odebranie wiadomości na innych wątkach (zwracają ''0'' sygnalizujące że zamknięto
 +połączenie) i przerywa operacje wysyłania danych (zgłaszają sygnał SIGPIPE
 +i zwracają -1 sygnalizujące błąd, ustawiając wcześniej ''errno'' na ''EPIPE'').
 +
  
 ~~Zadanie.#~~ Napisz własną wersję programu ''netcat'' wspierającą tylko klienta ~~Zadanie.#~~ Napisz własną wersję programu ''netcat'' wspierającą tylko klienta
sk2/sockets_concurrency.txt · Last modified: by jkonczak