pthread_cond_wait
позволяет нам ждать, пока переменная условия не получит сигнал.
Однако есть ли шанс дождаться, пока какая-либо из двух условных переменных не получит сигнал?
Причина, по которой я спрашиваю, заключается в том, что у меня следующая ситуация: у меня есть 42 потока и два возможных предиката, при которых эти потоки могут продолжать свою работу. Они могут продолжать свою работу, если выполняется ЛЮБОЙ из этих двух предикатов.
Но, но, проблема в том, что когда один из этих предикатов выполняется, то может продолжать работу только один поток, и конкретный поток, а не любой поток. Если другое выполняется, то ВСЕ потоки должны быть возобновлены.
Итак, моя идея состояла в том, чтобы иметь одну условную переменную, которая транслируется всякий раз, когда выполняется второе pred… и еще 42 условных переменных, каждая из которых связана с одним из потоков. Соответствующий из них должен сигнализироваться всякий раз, когда выполняется первое пред.
Но это требует, чтобы потоки просыпались всякий раз, когда сигнализируется ЛЮБАЯ из заданного набора переменных cond... Есть ли шанс добиться этого?