Вот код в строке # 1:
move = false;
//start thread #2
while(!move) Sleep(5);
//do stuff
Тема № 2:
//do stuff
move = true;
Есть ли лучший способ дождаться изменения перемещения, например, делать то, что называется блоком, пока данные не будут прочитаны в сети?
У вас есть способ.
Есть и другие вещи, которые вы можете использовать. Некоторые приходят мне в голову:
Использование условий
Условие где-то, где вы можете ждать() для другой части (потока) кода для сигнала(), вы можете продолжить
Условия связаны с мьютексом
В вашем коде:
Тема № 1
// start thread #2
mutex.acquire();
// You could check for an actual condition here if it
// is more complex than a true false.
condition.wait();
// If we're checking for a complex condition here
// we should re-evaluate in case it is not satisfied.
mutex.release();
Тема № 2
// do stuff
mutex.acquire();
condition.signal();
mutex.release();
Использование будущего
Будущее представляет собой конструкцию более высокого уровня для представления результата асинхронной операции.
Он работает примерно так:
Future
и сохраняет ссылку на него и передает ссылку на поток, выполняющий асинхронную операцию.Использование С++ 11? Используйте std :: condition_variable.