Komunikace mezi pthread vlakny

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Duben 13 23:21:51 CEST 2003


On Sat, 12 Apr 2003, Stanislav Meduna wrote:

> Lenze strcit spravu do fronty je jedna vec a zobudit prijemcu
> vec druha. Kedze pokial viem nie je mozne sucasne cakat
> na POSIX-ove synchronizacne primitivy, filedeskriptor
> a casovac (navyse portabilne, neslo iba o Linux), bola
> zvolena cesta najmensieho odporu a pipou sa povedalo,
> ze sa nieco zmenilo a treba to spracovat.

To je problem. Takhle to holt vypada, kdyz se API vyrabi stylem
"kdyz pejsek s kocickou varili dort". :P

No jo, ale ted mne napada, ze pokud by bylo ucelem psani do fronty jen
vzbudit jiny thread (a nikoli posilat nejaka data), pak bylo uplne
zbytecne pri zapisu blbnout se selectem. Stacil jeden neblokujici zapis:
pokud se povedlo, pak ok, pokud se nepovedlo (s EWOULDBLOCK), pak to
znamena, ze buffer je plny a je to take ok, protoze budik je takrikajic
uz natazeny!?

> Mas sice uplnu pravdu, ze dobry kod s tym ma pocitat, ale
> rovnako ma pocitat jadro s tym, ze bude mat klientov
> zapisujucich do pipy po malych kuskoch so selectom medzi
> nimi.

To by sice asi melo, ale je to malo obvykly zpusob uziti. Drtiva vetsina
pouziti roury vypada tak, ze jeden proces do ni dela blokujici zapisy a
druhy proces z ni zase dela blokujici cteni.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux