[問題] mutex是class成員的相關疑問

作者: hn12404988 (Willy)   2016-08-18 23:01:33
開發平台(Platform): linux
額外使用到的函數庫(Library Used): No
問題(Question):
請問如果mutex宣告在class(A)裡的一個private變數
然後裡面一個member function(fn)會mutex.lock
然後int main中宣告兩個A的物件,例如a1, a2
這時候開兩個thread出去,假設p1, p2
p1會使用到a1, p2會使用到a2,兩個thread都會使用到fn這個function
請問以下我假設的是否都正確?
1. 那個mutex等同沒用,因為是兩個mutex分別被兩個thread使用
2. 如果p1, p2都使用a1,則mutex有用
3. 如果mutex是宣告static variable in class A,則p1使用a1和p2使用a2
這情況mutex有用
作者: bluesoul (忙死你老爸)   2016-08-18 23:44:00
1,2,3皆正確,通常3不會這樣用就是
作者: Caesar08 (Caesar)   2016-08-18 23:49:00
1,2,3皆正確,但mutex配合static應該不是正確解答
作者: ilikekotomi (Young)   2016-08-18 23:50:00
2比較好用 3的話A這個class就全部共用同個mutex了
作者: bluesoul (忙死你老爸)   2016-08-19 00:05:00
除非你要保護的也是static member
作者: shadow0326 (非議)   2016-08-19 10:48:00
繼續用不同instance並且拔掉mutex 選我正解(x
作者: hn12404988 (Willy)   2016-08-19 10:48:00
知道了,謝謝各位回答

Links booklink

Contact Us: admin [ a t ] ucptt.com