URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6200
[ Назад ]

Исходное сообщение
"Ожидание нуля в семафорах Posix нет?"

Отправлено Leogenius , 26-Фев-07 16:33 
ДЛя семафоров SystemV можна сделать такую штуку как ожидание значения 0:

int wait_null(int semID) {
      struct sembuf operations[1];
    operations[0].sem_num    = 0;
    operations[0].sem_op    = 0;
    operations[0].sem_flg    = 0;
    return semop(semid,operations,1);
}

Не могу такое найти для семафоров Posix. Можна ли что то похожее организовать, возможно не через семафоры Posix?


Содержание

Сообщения в этом обсуждении
"Ожидание нуля в семафорах Posix нет?"
Отправлено Wulf , 26-Фев-07 20:36 
>ДЛя семафоров SystemV можна сделать такую штуку как ожидание значения 0:
>
>int wait_null(int semID) {
>      struct sembuf operations[1];
> operations[0].sem_num = 0;
> operations[0].sem_op = 0;
> operations[0].sem_flg = 0;
> return semop(semid,operations,1);
>}
>
>Не могу такое найти для семафоров Posix. Можна ли что то похожее
>организовать, возможно не через семафоры Posix?

а разве sem_wait() делает что-то другое?


"Ожидание нуля в семафорах Posix нет?"
Отправлено Leogenius , 26-Фев-07 21:20 
>а разве sem_wait() делает что-то другое?
Возврат из sem_wait() идет тогда, когда удалось уменьшить значение семафора, а оно могло быть не только 1, а и 2,3... А нужно только тогда, когда значения семафора достигло 0 без изменения его сначения.



"Ожидание нуля в семафорах Posix нет?"
Отправлено Wulf , 26-Фев-07 23:02 
>>а разве sem_wait() делает что-то другое?
>Возврат из sem_wait() идет тогда, когда удалось уменьшить значение семафора, а оно
>могло быть не только 1, а и 2,3... А нужно только
>тогда, когда значения семафора достигло 0 без изменения его сначения.


Вот здесь: http://www-128.ibm.com/developerworks/linux/library/l-ipc2li... снизу (Listing 12 и 13)есть пример с решением чем-то схожей задачи. Это достигается при помощи введения дополнительного счетчика, закрытого мутексом, и проверкой его состояния. Вероятно, Вам тоже следует двигаться в этом направлении.


"Ожидание нуля в семафорах Posix нет?"
Отправлено Leogenius , 27-Фев-07 10:19 
>Вот здесь: http://www-128.ibm.com/developerworks/linux/library/l-ipc2li... снизу (Listing 12 и 13)есть пример с решением чем-то
>схожей задачи. Это достигается при помощи введения дополнительного счетчика, закрытого мутексом,
>и проверкой его состояния. Вероятно, Вам тоже следует двигаться в этом
>направлении.

Спасибо, уже обдумывал решение на основе переменной с мьютексами. Пока не нравиться этот вариант, так как придеться мьютексы засовывать в shared memory. Но если не найду другие варианты решения - приму этот вариант. А за ссылку еще раз спасибо!