#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语言中实现多线程同步,保证线程间的数据访问安全。