Vlakna a soubory

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Květen 17 21:25:49 CEST 2007


On Thu, 17 May 2007, Dalibor Straka wrote:

> Pro zapis mam vlakno blokovane mutexy, ale nemuzu se docist jestli by
> vadilo paralelni cteni a zapis.

Jádru to nevadí. Pokud si nebudete během čtení do čtené oblasti zapisovat,
pak to nebude vadit ani Vám.

Tedy ještě je zde otázka, zda si pod paralelními operacemi představujete
paralelní operace nad různými fd nebo jedním a tím samým fd, protože běžné
čtení a zápis hýbe s ukazatelem aktuální pozice v souboru...

> Jedine co mi dela starost je lseek(), jenze v manu neni nikde
> thread_save nebo unsave apod.

lseek() je dokonce reentrantní. Ovšem pokud ho chcete používat z různých
vláken na jeden fd, pak si stejně koledujete o průšvih, protože se může
např. stát, že místo dvou sekvencí (lseek(), read()) se stane (lseek(),
lseek(), read(), read()) s úplně jinými výsledky.

Buď musíte v různých vláknech používat různé fd, nebo to musíte
serializovat, nebo musíte používat pread() a pwrite().

> Samozrejme bych mohl pouzit mutexy, ale proc blokovat zbytecne vlakno,
> to bych byl hloupy a program pomaly.

Znáte ten vtip, jak 486 a Pentium soutěží v počítání?


--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