- 論壇徽章:
- 1
|
線程見同步問題:一個數(shù)組可以同時寫,讀的時候需要鎖定?
1、線程同步常用的方式有兩種,一種是互斥鎖。該機制適合于數(shù)個線程對共享資源的同時訪問所帶來的問題。
示例代碼如下:
- 。。。。
- pthread_mutexattr_t *attr;
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- 。。。。
- if( ( ret = pthread_mutex_init(&mutex ,NULL) ) != 0 ) {
- (void)fprintf(stderr,"pthread_mutex_init error\n");
- return PINIT_FAILED;
- }
- 。。。。
- if( ( ret = pthread_mutex_lock(&mutex ) != 0 ) {
- (void)fprintf(stderr,"pthread_mutex_lock error\n");
- return PLOCK_FAILED;
- }
- /*該處是要保護的資源*/
- 。。。。
- if( ( ret = pthread_mutex_unlock(&mutex ) != 0 ) {
- (void)fprintf(stderr,"pthread_mutex_lock error\n");
- return PUNLOCK_FAILED;
- }
- 。。。
復(fù)制代碼
需要說明的是對于靜態(tài)分配的互斥鎖,建議做pthread_mutex_init,有些系統(tǒng)并不做初始化的工作。
2、另外常用的一種是條件變量,該機制類似于信號處理,通過阻塞與等待條件變量信號來實現(xiàn)?蓞⒖聪旅娴恼{(diào)用。
pthread_cond_wait
pthread_cond_timedwait
pthread_cond_signal
pthread_cond_broadcast
[/code] |
|