Я хочу подождать, пока две переменные bool
будут истинными в одном потоке. Они меняются в разных местах. Я могу использовать boost в моем проекте, но не C++ 11. Я нашел информацию о том, как использовать мьютексы и переменные условия, но я не уверен, можно ли ожидать двух мьютексов. Это какой-то псевдокод моей программы.Синхронизация нити: Подождите, пока две переменные bool.
bool job1_dataready, job2_dataready;
//t1:
void job1()
{
//do stuff
job1_dataready = true;
}
//t2:
void job2()
{
//do stuff
job2_dataready= true;
}
main()
{
boost::thread t1(job1);
boost::thread t1(job2);
if(job1_dataready&& job2_dataready)
{
//do stuff with data from both jobs
}
}
Кажется, вы забыли включить вопрос в вашем вопросе. – Biffen
Ваши булевы не защищены мьютезом или другим механизмом синхронизации, и они не являются атомарными. Это означает, что доступ из основного и рабочего потоков будет несинхронизирован и, следовательно, не определено поведение. (Это не ответ на вашу проблему, просто чтобы указать, что ваша текущая попытка никуда не денется.) – MSalters