Różnice między wybraną wersją a wersją aktualną.
| Both sides previous revision Poprzednia wersja | |||
|
bio-psiec:threads [2026/01/08 15:53] jkonczak [C++] |
bio-psiec:threads [2026/01/18 13:02] (aktualna) jkonczak |
||
|---|---|---|---|
| Linia 359: | Linia 359: | ||
| </code> | </code> | ||
| - | Standard POSIX określa czy i jak można ją wykonywać funkcje współbieżnie z | + | 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 | innymi. Dla gniazd TCP można współbieżne wywoływać operacje wejścia/wyjścia | ||
| - | na tym samym gnieździe i są one atomowe, tzn. wywołanie współbieżnie dwóch | + | na tym samym gnieździe. O ile dla niektórych rodzajów plików standard POSIX |
| - | ''send'' (lub dwóch ''recv'') wykona najpierw jedno z tych wywołań, potem | + | określa że operacje wejścia/wyjścia są atomowe (tzn. wywołanie współbieżnie |
| - | drugie. | + | dwóch ''write'' lub dwóch ''read'' wykona najpierw jedno z tych wywołań, |
| + | potem drugie), o tyle dla gniazd nie ma takiej gwarancji. | ||
| \\ | \\ | ||
| - | Przy czym trzeba pamiętać, że niektóre operacje mogą wysłać czy odczytać mniej | + | Trzeba pamiętać, że często operacje wejścia/wyjścia mogą odczytać czy wysłać |
| - | danych niż żądał programista, więc zwykle i tak synchronizacja (przynajmniej | + | mniej danych niż żądał programista, więc zwykle i tak synchronizacja |
| - | odbierania) na tym samym gnieździe jest konieczna. | + | (przynajmniej odbierania) na tym samym gnieździe jest konieczna. |
| \\ | \\ | ||
| Zamknięcie połączenia TCP z jednego wątku przerywa operacje czekające na | Zamknięcie połączenia TCP z jednego wątku przerywa operacje czekające na | ||
| Linia 391: | Linia 392: | ||
| wszystkim połączonym klientom. Zauważ że serwer musi jednocześnie czekać na | wszystkim połączonym klientom. Zauważ że serwer musi jednocześnie czekać na | ||
| nowych klientów i jednocześnie odbierać wiadomości od każdego z już połączonych. | nowych klientów i jednocześnie odbierać wiadomości od każdego z już połączonych. | ||
| + | \\ | ||
| + | Załóż że każde wysłanie wiadomości jest wykonywane bez blokowania. | ||