是一个简单的C代码示例,演示了如何使用条件变量实现线程同步
在上面的示例中,我们首先定义了一个互斥锁mutex和一个条件变量cond。然后,我们创建了两个线程thread1和thread2,分别执行thread_func1和thread_func2函数。
thread_func1和thread_func2函数都包含一个循环,通过调用pthread_mutex_lock函数获取互斥锁,然后在条件变量上等待,直到另一个线程发出通知。在等待期间,线程通过调用pthread_cond_wait函数释放互斥锁,以便其他线程可以获取互斥锁并修改共享变量count。一旦条件变量被满足,线程会重新获取互斥锁,并执行相关操作,例如输出一条消息。在完成操作后,线程通过调用pthread_cond_signal函数发出信号,告诉另一个线程可以开始执行。最后,线程通过调用pthread_mutex_unlock函数释放互斥锁。
在主函数中,我们创建了两个线程,并等待它们执行完毕,然后退出程序。
gcc -pthread -o condvar condvar.c
Thread 1: 0
Thread 2: 0