Komunikace mezi pthread vlakny

Stanislav Meduna stano-cznews na meduna.org
Neděle Duben 6 18:19:17 CEST 2003


On Sun, 6 Apr 2003 14:13:01 +0000 (UTC), Pavel Kankovsky wrote:

: To leda pokud writer provadi aktivni cekani. Pokud visi v select(),
: poll() (a ceka na zapisovatelnost), nebo primo ve write(), tak jaksi
: schazi duvod provadet context switche.

Writer nemoze pokracovat, tak sa zobudi reader. Precita tych desat
bajtov co mu tam writer poslal a odvisne v selecte sam. No a v tom
momente moze zase ist writer. Ked som to pred tymi 3 rokmi
skusal, PPro 166 MHz mi spravil 75000 context switchov
(podla /proc/stat) za sekundu s pomerom user-system time 20:80.
To je sice impozantne cislo (windoze zvladli daleko menej), ale
vtedy ma nejak nepotesilo :-) Ked som zbastlil patch,
ktory si pre pipu naalokoval dvojnasobok PIPE_BUF, to cislo
islo okamzite o rad dole.

Na ten problem som vtedy narazil s realnou aplikaciou - sice
pri zatazovom teste, ale nebol to len umelo vyfabrikovany kod.

Andi Kleen mi na to napisal:
  Programs that really need the bandwidth don't use pipes. Page
  switching is relatively costly, especially on SMP. Clean POSIX
  shm support would be probably better.

Co ma zrejme pravdu...

: Vypada, ze zde je (a nebo aspon nekdy v historii Linuxu byl) jisty problem
: spis v implementaci select()/poll() (a vlastne i write() na rouru), ktera
: vesele budila cekajici procesy, bez ohledu na to, na co cekaji

Hej, to mi tiez nieco hovori.

Zdravi
-- 
                                    Stano



Další informace o konferenci Linux