看板 C_and_CPP 關於我們 聯絡資訊
BCB用到thread時,如果有改到相同的variable時必須要用Synchronize避免出錯 那如果兩thread只是使用到相同的global variable,但沒有更改到它們時 彼此thread運作中的function還是會互相被block住嗎? (目前感覺似乎是如此,但還是有點不確定) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.97.5
firose:Synchronize 是委託主執行緒去執行, 用在 TThread 存取 UI 06/06 20:06
firose:你的需求似乎要用 TMultiReadExclusiveWriteSynchronizer 06/06 20:09
Trumen:用在 TThread 存取 UI 是指? 網路上TMREWS的資料好少orz 06/06 22:39
firose:UI 是跟執行緒相依的, 要修改 UI 就要發送訊息給相關執行緒 06/06 23:15
firose:通常 BCB 都是讓主執行緒去產生元件, 使用 Synchronize 其 06/06 23:16
firose:實是 SendMessage 給主執行緒, 委託它去執行. 你有兩個執行 06/06 23:16
firose:序修改 global 變數, 都用 Synchronize 去執行, 主執行緒一 06/06 23:17
firose:次只能替一個人服務, 當然兩個 worker thread 就會互相等待 06/06 23:18
firose:但全域變數(非UI)不需要 Synchronize 用同步物件就可以了 06/06 23:21
firose:要可以同時讀不互相等待就是用 Read/Write Lock 06/06 23:22
Trumen:謝謝樓上! 06/08 12:41