Portál AbcLinuxu, 9. srpna 2025 20:20


Dotaz: Kritická sekce v bashi?

19.9.2006 10:11 Kníže Ignor | skóre: 19 | blog: stoupa
Kritická sekce v bashi?
Přečteno: 73×
Odpovědět | Admin
Nedala by se v bashi vytvořit nějak takto kritická sekce?

inicializace:
 mkfifo /moje/dlouha/roura
 echo > /moje/dlouha/roura &
pokus o kritickou sekci:
 head -1 /moje/dlouha/roura
 ..práce nad sdílenou pamětí..
 echo > /moje/dlouha/roura &
prostě proces může vstoupit do kr. sekce jen tehdy, pokud může načíst řádek z roury = nikdo jiný v kritické sekci není (jinak je uspán)

je tam někde chyba nebo by to tak fakt mohlo fungovat?
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.9.2006 10:32 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Kritická sekce v bashi?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je roura otevrena pro zapis a program zkusi jako prvni head, tak necte jeden radek, ukonci se, rouru nebude nikdo cist, ostatni procesy udelaji to same a pak se budou vsichni pracovat se sdilenou pameti :D
lockfile(1)

       Suppose  you  want  to  make  sure that access to the file
       "important" is serialised, i.e., no more than one  program
       or  shell script should be allowed to access it.  For sim-
       plicity's sake, let's suppose that it is a  shell  script.
       In this case you could solve it like this:
              ...
              lockfile important.lock
              ...
              access_"important"_to_your_hearts_content
              ...
              rm -f important.lock
              ...
       Now if all the scripts that access "important" follow this
       guideline, you will be assured that  at  most  one  script
       will be executing between the `lockfile' and the `rm' com-
       mands.
19.9.2006 10:36 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Kritická sekce v bashi?
Nehlede na to, ze echo do roury skonci, jakmile tam vsechno zapise nebo mu prvni head zavre druhej konec roury (protoze SIGPIPE).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.