在C語言中進行多線程并行時,可以通過使用互斥鎖(mutex)、條件變量(condition variable)等同步機制來保證線程安全和數據一致性。下面是一些常用的同步方法:
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
// 線程1加鎖
pthread_mutex_lock(&mutex);
// 訪問共享資源
// 線程1解鎖
pthread_mutex_unlock(&mutex);
// 線程2加鎖
pthread_mutex_lock(&mutex);
// 訪問共享資源
// 線程2解鎖
pthread_mutex_unlock(&mutex);
pthread_mutex_destroy(&mutex);
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_cond_init(&cond, NULL);
pthread_mutex_init(&mutex, NULL);
// 線程1等待條件滿足
pthread_mutex_lock(&mutex);
while (condition_not_met) {
pthread_cond_wait(&cond, &mutex);
}
// 條件滿足后,繼續執行
// 線程2發送通知
pthread_mutex_lock(&mutex);
// 修改條件
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
pthread_cond_destroy(&cond);
pthread_mutex_destroy(&mutex);
除了互斥鎖和條件變量,還可以使用信號量(semaphore)、屏障(barrier)等同步機制來實現線程間的同步和協作。在多線程編程中,合理使用同步機制可以避免數據競爭和死鎖等問題,并提高程序的并發性能。