第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么線程1輸出到50被掛起后線程2才會獲得互斥鎖呢?

為什么線程1輸出到50被掛起后線程2才會獲得互斥鎖呢?

HUH函數(shù) 2023-03-03 16:12:56
#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include <errno.h> int gnum = 0; int gsub = 100;pthread_mutex_t mutex; pthread_cond_t cond; //條件變量 void pthread_func_1 (void); void pthread_func_2 (void); int main (void) { pthread_t pt_1 = 0; pthread_t pt_2 = 0; int ret = 0; pthread_mutex_init (&mutex, NULL); //默認(rèn)情況下 互斥初始化后是解鎖狀態(tài)可用 pthread_cond_init(&cond,NULL); // //pthread_cond_init(指向pthread_cond_t的指針,屬性設(shè)置<NULL>默認(rèn)屬性) ret = pthread_create (&pt_1, NULL, (void *)pthread_func_1, NULL); if (ret != 0) printf("pthread_1_create"); ret = pthread_create (&pt_2, NULL, (void *)pthread_func_2, NULL); if (ret != 0) printf("pthread_2_create"); pthread_join (pt_1, NULL); pthread_join (pt_2, NULL); printf ("main programme exit!/n"); return 0; }  void pthread_func_1 (void) { //int i = 0; printf ("pthread1 start running!\n"); while(gnum <= 100) { pthread_mutex_lock(&mutex); /*注意,這里以防線程的搶占,以造成一個線程在另一個線程sleep時多次訪問互斥資源,所以sleep要在得到互斥鎖后調(diào)用*/ sleep (1); while (gnum == 50) { printf("supend thread1!!!\n"); pthread_cond_wait(&cond, &mutex); printf("thread1 restart!!!\n"); gnum++; } gnum++; printf ("gnum=:%d\n",gnum); pthread_mutex_unlock(&mutex); /*釋放互斥鎖*/ } }  void pthread_func_2 (void) { printf ("pthread2 start running!\n"); while (gsub >= 0) { pthread_mutex_lock(&mutex);//mutex被鎖住后,線程在此被掛起,等待mutex變?yōu)榻怄i狀態(tài)后,獲得互斥鎖,繼續(xù)執(zhí)行 sleep (1); gsub--; printf ("gsub=:%d\n",gsub); if (gsub == 50) { printf("resume thread1 at gsun = 5\n"); pthread_cond_signal(&cond);//讓掛起的線程繼續(xù)執(zhí)行 } pthread_mutex_unlock(&mutex); } pthread_exit (0); } 線程1和線程2不是應(yīng)該交替輸出的么?
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊

unlock之后休眠一下
pthread_mutex_unlock(&mutex); /*釋放互斥鎖*/  
sleep(1);
pthread1 start running!  
pthread2 start running!  
gnum=:1  
gsub=:99  
gnum=:2  
gsub=:98  
gnum=:3  
gsub=:97  
gnum=:4  
gsub=:96  
gnum=:5


查看完整回答
反對 回復(fù) 2023-03-06
  • 1 回答
  • 0 關(guān)注
  • 79 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號