[問題] BCB中的thread Synchronize的問題

看板C_and_CPP (C/C++)作者 (真好多人)時間16年前 (2010/06/06 19:25), 編輯推噓2(209)
留言11則, 2人參與, 最新討論串1/1
BCB用到thread時,如果有改到相同的variable時必須要用Synchronize避免出錯 那如果兩thread只是使用到相同的global variable,但沒有更改到它們時 彼此thread運作中的function還是會互相被block住嗎? (目前感覺似乎是如此,但還是有點不確定) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.97.5

06/06 20:06, , 1F
Synchronize 是委託主執行緒去執行, 用在 TThread 存取 UI
06/06 20:06, 1F

06/06 20:09, , 2F
你的需求似乎要用 TMultiReadExclusiveWriteSynchronizer
06/06 20:09, 2F

06/06 22:39, , 3F
用在 TThread 存取 UI 是指? 網路上TMREWS的資料好少orz
06/06 22:39, 3F

06/06 23:15, , 4F
UI 是跟執行緒相依的, 要修改 UI 就要發送訊息給相關執行緒
06/06 23:15, 4F

06/06 23:16, , 5F
通常 BCB 都是讓主執行緒去產生元件, 使用 Synchronize 其
06/06 23:16, 5F

06/06 23:16, , 6F
實是 SendMessage 給主執行緒, 委託它去執行. 你有兩個執行
06/06 23:16, 6F

06/06 23:17, , 7F
序修改 global 變數, 都用 Synchronize 去執行, 主執行緒一
06/06 23:17, 7F

06/06 23:18, , 8F
次只能替一個人服務, 當然兩個 worker thread 就會互相等待
06/06 23:18, 8F

06/06 23:21, , 9F
但全域變數(非UI)不需要 Synchronize 用同步物件就可以了
06/06 23:21, 9F

06/06 23:22, , 10F
要可以同時讀不互相等待就是用 Read/Write Lock
06/06 23:22, 10F

06/08 12:41, , 11F
謝謝樓上!
06/08 12:41, 11F
文章代碼(AID): #1C2uN7Ed (C_and_CPP)
文章代碼(AID): #1C2uN7Ed (C_and_CPP)