uzavreni spojeni s databazi pri exitu potomka
Josef Zlomek
josef.zlomek na email.cz
Čtvrtek Červenec 31 07:00:48 MEST 2003
> > Ahoj, > >
> > ve skriptu se nejdriv pomoci DBI pripojim na MySQL databazi,
> > pak naforkuju nekolik potomku, potomci pracuji s databazi, ale pomoci
> > semaforu hlidam, aby s ni pracoval jen jeden v konkretnim case.
> > Problem je, ze kdyz nektery z potomku zavola "exit 0;", spojeni se uzavre.
> > Nevite nekdo, cim by to mohlo byt? Diky.
> ako to robite s tymi semaformi?
> to by ma vazne zaujimalo..
> nikdy som nic take neriesil a uplne kludne som si selectoval, etc...
Nejdriv si vytvorim semafor a nastavim mu hodnotu 1:
use IPC::SysV qw(IPC_CREAT IPC_PRIVATE SEM_UNDO S_IRWXU);
use IPC::Semaphore;
$sem = new IPC::Semaphore (IPC_PRIVATE,
1, # pocet semaforu v mnozine
S_IRWXU | IPC_CREAT);
exit if (!defined $sem);
$sem->setall (1); # hodnota nastavovana vsem semaforum v mnozine
Pak kdyz chci pracovat s databazi (tj. normalni "kriticka sekce"),
tak ho proste snizim:
$sem->op (0, # poradove cislo semaforu v mnozine
-1, # o kolik hodnotu semaforu menim
SEM_UNDO); # kdyz proces chcipne, chci operaci zrusit a vratit stav zpet
A kdyz koncim, tak zase zvysim:
$sem->op (0, # poradove cislo semaforu v mnozine
1, # o kolik hodnotu semaforu menim
SEM_UNDO); # kdyz proces chcipne, chci operaci zrusit a vratit stav zpet
Pepa
Další informace o konferenci Perl