Держать поток неактивным, пока не произойдет событие? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь собрать код C, в котором поток выполняет определенную операцию, когда происходит событие.Однако, как только я создаю задачу с помощью pthread_create (), мой код переходит к функции потока.Можно ли каким-то образом просто инициировать поток, но держать его в режиме ожидания, пока не произойдет событие, и в то же время мои другие потоки продолжают выполняться независимо?

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете использовать семафор или переменную условия.

Семафор У потока событий будет операция sem_post (), у потока операций будет операция sem_wait ().

Переменная условия Похож на семафор. Условная переменная работает с мьютексом. Когда происходит событие, сообщите операционному потоку (pthread_cond_signal ()). Сигнал будет получен потоком операций, который ожидает в pthread_cond_wait ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...