|
Модераторы: xvr |
|
jnb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.10.2006 Репутация: нет Всего: 1 |
Помогите в юниксе (FreeBSD) реализовать следующую логику:
Есть два потока. Один из них находится в ожидании события, которое может сгенерировать второй поток. После этого он пробуждается, выполняет действия и опять переходит в ожидание этого же события. В винде это я реализовал бы через event и WaitForSingeObject. А как это сделать в юниксе с помощью pthread библиотеки? |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
pthread_cond_wait() / pthread_cond_signal()
man pthread -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
jnb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.10.2006 Репутация: нет Всего: 1 |
Спасибо.
Просто думал есть другие, более простые способы. А то эти сигнальные переменные какие-то слишком запутанные. Пришлось читать - разобрался. |
|||
|
||||
azesmcar |
|
|||
uploading... Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
pthread_join не подходит?
Добавлено @ 14:29 ааа..извиняюсь...не дочитал вопрос человек просил аналог WaitForSingleObject я думал ему просто нужно подождать пока поток завершится.. |
|||
|
||||
Ken |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: нет Всего: 4 |
Есть: sem_init, sem_wait, sem_post, sem_destroy. |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Ken,
человек использует потоки, а не процессы а все, что ты написал - это POSIX IPC -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Ken |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: нет Всего: 4 |
Он хотел аналог объекта события для потоков, а это очень легко реализуется на POSIX семафорах, которые предназначены как раз для синхронизации потоков. Надо создать семафор со значением 0 (sem_init). Поток ждущий событие "спит" на этом семафоре (sem_wait). Поток который посылает сигнал инкрементирует семафор (sem_post). Гораздо нагляднее и проще чем cond variables. А это отрывок из man pages: /* This manual page documents POSIX 1003.1b semaphores, not to be confused with SystemV semaphores as described in !ipc!(5), !semctl!(2) and !semop!(2). Semaphores are counters for resources shared between threads. The basic operations on semaphores are: increment the counter atomically, and wait until the counter is non-null and decrement it atomically. */ |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |