※ 引述《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