forked from OSchip/llvm-project
51 lines
794 B
C++
51 lines
794 B
C++
#include <condition_variable>
|
|
#include <mutex>
|
|
#include <thread>
|
|
|
|
std::mutex mutex;
|
|
std::condition_variable cond;
|
|
|
|
void *
|
|
thread3(void *input)
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex);
|
|
cond.notify_all(); // Set break point at this line.
|
|
return NULL;
|
|
}
|
|
|
|
void *
|
|
thread2(void *input)
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex);
|
|
cond.notify_all();
|
|
cond.wait(lock);
|
|
return NULL;
|
|
}
|
|
|
|
void *
|
|
thread1(void *input)
|
|
{
|
|
std::thread thread_2(thread2, nullptr);
|
|
thread_2.join();
|
|
|
|
return NULL;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex);
|
|
|
|
std::thread thread_1(thread1, nullptr);
|
|
cond.wait(lock);
|
|
|
|
std::thread thread_3(thread3, nullptr);
|
|
cond.wait(lock);
|
|
|
|
lock.unlock();
|
|
|
|
thread_1.join();
|
|
thread_3.join();
|
|
|
|
return 0;
|
|
}
|