Ключевые слова:lock, (найти похожие документы)
Date: Wed, 28 Nov 2001 13:51:23 +0300
From: Евгений Hепомнящий <Евгений.Hепомнящий@f6.n5032.z2.fidonet.org>
Newsgroups: fido7.ru.unix.prog
Subject: Реализация readers/writers lock на семаформах
> Hа тех, которые SysV. Читать могут многие сразу, а вот писать -- только
> один, и когда никто не читает...
Я сделал так:
num_readers = XXXX;
semctl( semid, semnum, SETVAL, num_readers )
READER просит чтение так:
struct sembuf sembuf;
sembuf.sem_num = semnum;
sembuf.sem_op = -1;
sembuf.sem_flg = 0;
semop( semid, &sembuf, 1 );
WRITER просит так же, но вместо
sembuf.sem_op = -1;
он вызывает
sembuf.sem_op = -num_readers;
ясно что я подразумеваю, что при форках например и SIGCHLD num_readers
меняется, поэтому у меня эта переменная в
mapped memory mmap(2)