Re: [問題] pthread_cond_wait 為什麼會有 mutex ꨠ…

看板C_and_CPP (C/C++)作者 (Alien)時間16年前 (2009/03/31 19:04), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
※ 引述《littleboypis (littleboypis)》之銘言: : 想請教一下各位一個函數 : int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); : 為何 pthread_cond_wait 這個函數的參數需要傳入一個 mutex 呢 : 雖然看了他的解說但還不是很明瞭 為何 : 而且 另一個 int pthread_cond_signal(pthread_cond_t *cond); 也不需要 mutex : 為何 pthread_cond_wait 要傳入一個 mutex呢 : 謝謝 : 另外在 C 底下要怎麼達到多型 或者 Hooking呢 : 因為我想在程式呼叫 pthread_create 前做一些事情 : 謝謝 以我所知, 分別在於 race condition 用 signal 很容易出現 race condition. 比如 Thread A: send a job wait for signal 然後 Thread B: process incoming job signaling 看上來很正常, 是吧? 但萬一發生的時序是: Thread A Thread B send job process incoming job signaling wait for signal 這種情況下, A 就會很傻很天真的一直等下去了 condition 的做法就是加 mutex, 令到 wait for signal 之後才暫時 release mutex, 而這時候 thread B 才能 取得 mutex 做 signalling Thread A Thread B mutex acquire send job process inocming job 企圖 acquire mutex wait + release mutex mutex acquired signal wake up+企圖acquire mutex mutex release mutex acquired 這樣就避免了前面說的 race condition 了 Alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82 ※ 編輯: adrianshum 來自: 202.155.236.82 (03/31 19:26) ※ 編輯: adrianshum 來自: 202.155.236.82 (03/31 19:28)

04/02 03:12, , 1F
推一個 之前對這東西的自行理解果然只有半吊子...
04/02 03:12, 1F

04/02 15:57, , 2F
其實我也是自行理解的 XDD 萬一有錯希望大家指正嘍
04/02 15:57, 2F

04/02 22:16, , 3F
檢驗multiprocess的deadlock發生有點像是要舉所有subset
04/02 22:16, 3F
文章代碼(AID): #19qVYtpp (C_and_CPP)
文章代碼(AID): #19qVYtpp (C_and_CPP)