LINUX.ORG.RU

А есть ли в POSIX threads вот что...


0

0

Портирую программу из Windows в Linux. Программа будет использовать pthreads_xxx. Есть ли в POSIX threads функция подобная WaitForMultipleObjects из Win32 API? Именно WaitForMultipleObjects, а не WaitForSingleObject...

anonymous

Нет, но можно написать свою используя pthread_cond_t и pthread_mutex_t, хотя будет выглядить кривовато.

Впрочем и прямого аналога WaitForSingleObject не существует, поскольку последний умеет ещё и завершаться по таймауту.

Вообще же здесь решение зависит от первоначальной реализации.
Например, если ты пользуешся Event-ами, то можно _ВСЕ_ эти события повесить на одно pthread_cond_t, а дальше фильтровать.

romanSA
()

А можно сделать pipe и poll'ить его вместе со всем чего нужно ждать, а в одну трубу пихать, например, номер event'a который нужен....

Хотя это не много не то. WaitForMultipleObjects может ждать во многих нитях одного и того же события и оно до всех дойтет.

anonymous
()

А чем barrier не подходит?

tvn
()

А что такое barrier?

anonymous
()

pthread_barrier - аналог mutex, текущая нить ждет определенного количества нитeй(событий) http://qdn.qnx.com/support/docs/neutrino_2.11_en/lib_ref/p/pthread_barrier_in... http://www.opengroup.org/onlinepubs/007904975/basedefs/pthread.h.html

Под линухом при компиляции надо задавать -D_GNU_SOURCE, это если все кратко изложить;)

Надеюсь это подойдет, по моему это будет наиболее близкое решение;)

tvn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.