Я не фанат потоков, проверяющих логические (или другие) переменные состояния, чтобы знать, когда что делать, потому что это расточительно. Потоки должны были бы вращаться, постоянно проверяя переменную, чтобы увидеть, есть ли новые инструкции. Это сжигает процессор.
Лучший вариант - создать семафор или в Windows событие, и все потоки ожидают этого. Потоки могут находиться в спящем режиме, пока они не заняты, и не будут красть временные интервалы у других потоков, выполняющих реальную работу, просто для проверки переменной.