看板 C_Sharp 關於我們 聯絡資訊
※ 引述《toki (いまがその時だ)》之銘言: : ※ 引述《JK (525天倒數)》之銘言: : : 想問一個關於lock關鍵字的問題 : : lock (object) : : { : : } : : lock的是{}中間包含的程式碼或者是object本身? : : 我遇到的問題是我有兩個function : : 分別對一個object作處理 : : 因為是在不同的thread底下做的 : : 所以在各自程式段都有加上lock : : 當這兩個function被不同thread執行到時 : : 究竟lock還有沒有效果呢? : : 還請版上高手不吝指教,謝謝:) : lock 物件 : lock (obj) : { : // your code : } : 等同 : Enter(obj); : // your code : Exit(obj); : 請參照 : http://msdn.microsoft.com/zh-tw/library/c5kehkcz.aspx : 至於 function 被不同的 thread 執行到,只要你 lock 的物件是同一個, : 同時間 lock 到相同物件的 thread 一定只有一個通過,而其它的 wait 最近小的遇到一個奇怪的問題 Application.current.begininvoke() { lock(locker) { // code 1 // code 2 } } 當不同的thread跑到lock下 的確會讓慢進的thread等在外面 可是當code 1是呼叫application的invoke時 如下所示 Application.current.begininvoke() { lock(locker) { Application.currenr.invoke() { // code 1 } // code 2 } } 此時同時間卻會好幾個thread進入lock 不知道為何會如此? 是這樣的寫法造成ui thread混亂? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.3.25