Мой текущий код Windows использует именованное событие для межпроцессного взаимодействия. Может быть много процессов, ожидающих события, когда оно сигнализируется, все ожидающие процессы освобождаются, а затем событие возвращается в несигнальное состояние. Я использую для этого функцию PulseEvent.
Как мне это сделать в линуксе? Функции pthread представляют собой межпотоковое взаимодействие. Я не вижу, где семафоры могут обеспечить такое же поведение, как в Windows. Похоже, что семафор Posix освобождает только один ожидающий поток. Если бы семафор мог освободить все ожидающие потоки, это сработало бы. Есть ли что-то в Linux, чего мне не хватает?
pthread_cond_init()/pthread_cond_wait()/pthread_cond_broadcast()/pthread_cond_destroy()
) или барьер (pthread_barrier_init()/pthread_barrier_wait()/pthread_barrier_destroy()
). - person ninjalj   schedule 14.12.2013