#include#include pthread_mutex_t mutex; void* threadFunction(void* arg) { // 线程执行的代码 pthread_mutex_lock(&mutex); // 临界区代码 pthread_mutex_unlock(&mutex); return NULL; } int main() { // 初始化互斥锁 pthread_mutex_init(&mutex, NULL); // 创建线程 pthread_t myThread; pthread_create(&myThread, NULL, threadFunction, NULL); // 主线程执行的代码 // 等待子线程结束 pthread_join(myThread, NULL); // 销毁互斥锁 pthread_mutex_destroy(&mutex); return 0; }
上述代码演示了在C语言中如何实现多线程同步。通过使用互斥锁pthread_mutex_t,我们可以确保在临界区代码执行期间,只有一个线程可以进入。
该程序中,使用pthread_mutex_init函数对互斥锁进行初始化。创建一个新线程时,通过pthread_create函数指定线程执行的函数为threadFunction。在执行临界区代码前,通过pthread_mutex_lock函数获取互斥锁。在临界区代码执行完成后,调用pthread_mutex_unlock函数释放互斥锁。
主线程执行完自己的代码后,通过pthread_join函数等待子线程结束。通过pthread_mutex_destroy函数销毁互斥锁。
通过合理地使用互斥锁,我们可以在C语言中实现多线程同步,保证线程间的数据访问安全。