The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Ожидание нуля в семафорах Posix нет?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Ожидание нуля в семафорах Posix нет?"  
Сообщение от Leogenius (ok) on 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?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Ожидание нуля в семафорах Posix нет?"  
Сообщение от Wulf on 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() делает что-то другое?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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


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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру