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;
 | 
						|
}
 |