Как заблокировать операцию в потоке, возобновить ее по сигналу в Linux без условной переменной?

0

Я пытаюсь написать неисправный код, который не использует переменную pthread_cond. При проверке условия, если условие не выполняется, он ожидает/блокирует навсегда. Поток B должен выставить сигнал, чтобы разблокировать поток A. Я не использую API для блокировки и разблокировки в Linux. Я хочу продемонстрировать условные переменные выгоды. Однако я хочу сначала написать код, который блокируется при условии, и он должен разблокировать по сигналу. В этом случае я покажу, как потерялся сигнал, и возникает состояние гонки. Пожалуйста, помогите мне с API и использованием.

  • 1
    Вы могли бы реализовать цикл занятого ожидания?
  • 0
    Я думаю, что вы спрашиваете о sigsuspend .
Показать ещё 1 комментарий
Теги:
multithreading

1 ответ

0
Лучший ответ

Вместо этого вы можете использовать pthread_mutex. Сначала создайте глобальный мьютекс и заблокируйте его в своей функции main() перед созданием потоков A & B. В поток A сделайте pthread_mutex_lock(), который будет ждать разблокировки мьютекса. В потоке B выполните pthread_mutex_unlock(), чтобы передать поток A для продолжения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню