Моя программа настроена следующим образом:
Существует потокобезопасный класс очереди, один поток толкает данные на него, сидя в бесконечном цикле, а второй поток выталкивает данные из него, сидя в бесконечном цикле. Я пытаюсь думать о том, как использовать события Windows, или какой-то другой механизм, чтобы сделать поток_1 (ниже), ждать в бесконечном цикле и только итерацию, когда глубина очереди больше или равна 1.
class thread-safe_Queue
{
public:
push();
pop();
};
DWORD thread_1()
{
while(1)
{
// wait for thread-safe queue to have data on it
// pop data off
// process data
}
}
DWORD thread_2()
{
while(1)
{
// when data becomes available, push data onto thread-safe queue
}
}