4、線程間互斥
使用互斥鎖(互斥)可以使線程按順序執(zhí)行。通常,互斥鎖通過確保一次只有一個線程執(zhí)行代碼的臨界段來同步多個線程。互斥鎖還可以保護單線程代碼。
int pthread_mutex_lock(pthread_mutex_t * mptr);
int pthread_mutex_unlock(pthread_mutex_t * mptr);
5、線程間同步
條件變量:使用條件變量可以以原子方式阻塞線程,直到某個特定條件為真為止。條件變量始終與互斥鎖一起使用。對條件的測試是在互斥鎖(互斥)的保護下進行的。
#include
int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);
//Both return: 0 if OK, positive Exxx value on error
pthread_cond_wait用于等待某個特定的條件為真,pthread_cond_signal用于通知阻塞的線程某個特定的條件為真了。在調(diào)用者兩個函數(shù)之前需要聲明一個pthread_cond_t類型的變量,用于這兩個函數(shù)的參數(shù)。
/*
是否熟悉POSIX多線程編程技術?如熟悉,編寫程序完成如下功能:
1)有一int型全局變量g_Flag初始值為0;
2)在主線稱中起動線程1,打印“this is thread1”,并將g_Flag設置為1
3)在主線稱中啟動線程2,打印“this is thread2”,并將g_Flag設置為2
4)線程序1需要在線程2退出后才能退出
5)主線程在檢測到g_Flag從1變?yōu)?,或者從2變?yōu)?的時候退出