Всем привет! Интересует такой момент, есть ли в linux функция, которая приостанавливает выполнение процесса/потока до тех пор, пока не будет установлен определенный флаг.
Пример из eCos:
#define OUR_EVENT_TYPE 0x1
//определение нашего флага
static cyg_flag_t our_event;
//функция потока
void our_thread(cyg_addrword_t data)
{
while (1) {
(void)cyg_flag_wait(&our_event, OUR_EVENT_TYPE ,CYG_FLAG_WAITMODE_OR | CYG_FLAG_WAITMODE_CLR);
//дальше что-то выполняется
...
}
В данном коде, после запуска потока, функция cyg_flag_wait приостанавливается/ждет, пока не будет установлен флаг our_event функцией cyg_flag_setbits(&our_event, OUR_EVENT_TYPE).
Есть ли что-то подобное в linux. Варианты типа запустить процесс после того как произойдет какое либо событие не подходит, так как после выполнения цикла while он снова ждет, пока флаг ну будет задействован.