@Sdelan_v_CCCP

Можно ли pThread поставить в состояние паузы из другого потока?

Доброго времени суток! Интересует такой вопрос, возможно ли в POSIX потоке поставить на паузу другой поток по его ID. И еще сделать так, чтобы после создания, поток был в состоянии паузы, и запустить его из другого потока когда мне это будет нужно.
PS: Linux, язык программирования Си.
  • Вопрос задан
  • 2759 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В pthreads нет одной переносимой функции для того, что вы хотите сделать. Первую часть (поставить на паузу другой поток по его ID) можно реализовать с помощью сигналов, вторую (чтобы после создания поток был в состоянии паузы) -- с помощью примитивов синхронизации.
Поиск по слову pthread_suspend выведет вас на возможные реализации.
Ответ написан
leahch
@leahch Куратор тега Linux
3Д специалист. Долго, Дорого, Дерьмово.
Напрямую такой реализации нет, но сделать достаточно просто, используйте мьютексы!
создали мьютекс, захватили его, создали поток и в нем ждете мьютекс. Как только вам нужно старновать поток, отпускаете мьютекс. Нужно остановить - захватываете мьютекс.
Данный сценарий реализован например в gstreamer при работе с тасками (GstTask), там дополнительно есть пользовательский callback, который вызывается после захвата мьютекса - описание здесь gstreamer.freedesktop.org/data/doc/gstreamer/head/...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы