Re: [問題] mutex跟lock有甚麼不同

看板C_Sharp (C#)作者 (小涵)時間15年前 (2010/10/15 08:47), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
不好意思下面是我的程式碼,請多多指教 mut.WaitOne(); if (ticketTotalNumber > 0) { ticketTotalNumber--; showSellTicket(name, showSellTextBox); } mut.ReleaseMutex(); -------以上是mutex,以下是lock-------- lock (this) { if (ticketTotalNumber > 0) { ticketTotalNumber--; showSellTicket(name, showSellTextBox); } } ※ 引述《julietgirl76 (小涵)》之銘言: : 大家好 : 我在網路上有看到一些資料 : 知道mutex是可以跨process而lock不可以 : 但是效用是一樣的,都是只能讓單一執行緒進入 : 可是我今天在測試的時候發現一個問題 : 就是我設定五個thread代表五個小朋友去搶85顆糖 : 一次只能有一個小朋友拿到一顆 : 利用lock的時候雖然每次重新執行結果都不一樣 : 但是感覺會有順序性(用a b c d e代表五個小朋友),比如說都是 : aedbc aedbc aedbc : 但是如果用mutex的話就不會,會變成 : abccdebedcaa..類似這樣 : 不知道有沒有人可以點一下呢 : 謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.46.91

10/15 14:54, , 1F
lock實際上是Monitor, 所以這問題應該是Mutex和Monitor
10/15 14:54, 1F

10/15 14:55, , 2F
有什模不同, http://goo.gl/yH6g
10/15 14:55, 2F

10/16 14:37, , 3F
D大說得對.lock就是用Monitor class.
10/16 14:37, 3F
文章代碼(AID): #1CjwIL62 (C_Sharp)
文章代碼(AID): #1CjwIL62 (C_Sharp)