Wielowątkowość: Odczyt z / zapisywanie do potoku

Piszę dane do potoku - być może dużo danych i losowo. Jak odczytać dane z rury?

Czy to jest ok:

w głównym wątku (bieżący proces) utwórz dwa kolejne wątki (2, 3)drugi wątek pisze czasem do rury (i opróżnia rurę?)trzeci wątek ma nieskończoną pętlę, która odczytuje potok (a następnie śpi przez pewien czas)

Czy to do tej pory poprawne?

Teraz jest kilka rzeczy, których nie rozumiem:

czy muszę zablokować (mutex?) potok podczas zapisu?IIRC, podczas zapisywania do potoku i zapełnienia bufora, koniec zapisu zostanie zablokowany, dopóki nie przeczytam już zapisanych danych, prawda? Jak sprawdzać odczytane dane w rurze, nie za często, nie za rzadko? Więc drugi wątek nie zostanie zablokowany? Czy jest coś takiegoselect na rury?Możliwe jest ustawienie potoku na niezbuforowany lub muszę go regularnie opróżniać - który jest lepszy?Czy powinienem utworzyć jeszcze jeden wątek, tylko do spłukiwania rury po napisaniu? Ponieważ opróżnia bloki, gdy bufor jest pełny, prawda? Po prostu nie chcę blokować pierwszego i drugiego wątku ....

[Edycja] Niestety, myślałem, że pytanie jest agnostyczne na platformie, ale na wszelki wypadek: patrzę na to z perspektywy Win32, prawdopodobnie MinGW C ...

questionAnswers(1)

yourAnswerToTheQuestion