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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么sleep位置改了也不行~ 如下改在解鎖后面還是不行?

為什么sleep位置改了也不行~ 如下改在解鎖后面還是不行?

陪伴而非守候 2023-04-15 22:18:51
#include <unistd.h>#include <pthread.h>#include <stdio.h>pthread_mutex_t Poll_Work;       //互斥pthread_cond_t Poll_Full;       //條件void* thread0(void *param){ while(*(int*)param < 100 && *(int*)param >= 0){ pthread_mutex_lock(&Poll_Work); (*(int*)param) += 5; printf("Thread0: %d\n", *(int*)param); pthread_mutex_unlock(&Poll_Work);                sleep(2); } pthread_cond_signal(&Poll_Full); return NULL; }void* thread1(void *param){ while(*(int*)param < 100 ){ pthread_mutex_lock(&Poll_Work); (*(int*)param) -= 5; printf("Thread1: %d\n", *(int*)param); pthread_mutex_unlock(&Poll_Work);                sleep(2); } pthread_cond_signal(&Poll_Full); return NULL; }void* thread2(void *param){ pthread_mutex_lock(&Poll_Work);  while(*(int*)param < 100)  pthread_cond_wait(&Poll_Full, &Poll_Work);  printf("Thread2: Poll Is Full!!\n");   pthread_mutex_unlock(&Poll_Work);  return NULL; }int main(){ int sum = 0;   //水深  滿為100米 初始化 池里沒有水 int i; pthread_mutex_init(&Poll_Work, NULL); pthread_cond_init(&Poll_Full, NULL); pthread_t ths[3]; pthread_create(&ths[0], NULL,  thread0, (void*)&sum); pthread_create(&ths[1], NULL,  thread1, (void*)&sum); pthread_create(&ths[2], NULL,  thread2, (void*)&sum); for(i = 0; i < 3; ++ i){ pthread_join(ths[i], NULL); } printf("Play End!\n"); }程序大概意思 一個(gè)可以裝100水的pool 兩個(gè)線程 一個(gè)不斷加5 一個(gè)不斷減3 第三個(gè)線程用于輸出 當(dāng)滿的時(shí)候 輸出Full 可是運(yùn)行程序后 發(fā)現(xiàn)總是只有一個(gè)線程在運(yùn)行 另一個(gè)完全沒反應(yīng)。 加了sleep也不見另一個(gè)線程被調(diào)度執(zhí)行。
查看完整描述

1 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

因?yàn)槟愕膕leep放錯(cuò)了地方,應(yīng)該是放在 pthread_mutex_unlock 后面。

另外,不建議使用sleep,建議使用pthread_yield來放棄cpu。

然后你就會(huì)發(fā)現(xiàn)你的代碼邏輯有些問題,比如說sum < 0了,thread1還在繼續(xù)運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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