То, что вы реализовали, это почти Алгоритм Петерсона . Как указывалось выше, это не безопасно для потоков, так как не существует механизма, предотвращающего одновременное попадание обоих потоков в критическую секцию. Вы можете попытаться правильно реализовать алгоритм Петерсона, но гораздо эффективнее использовать настоящий мьютекс.
Основная проблема вашего подхода заключается в том, что поток может быть прерван после выхода из цикла while, но до того, как он установит для bool значение true. Если это произойдет, то ваши два потока вместе войдут в критический раздел. Если у вас более двух потоков, то у вас будет несколько потоков, которые одновременно выходят из цикла.