Win32多執行緒之我需要鎖定資料嗎?

2021-06-19 14:34:14 字數 341 閱讀 1451

很多人不知道如何決定資料是否需要保護,使用同步機制會使程式效率降低,而且它們也不容易使用,但是在某些情況下又非用不可。下面是一些指導方針:

1) 如果你不確定,那麼你或許需要乙個鎖定;

2) 如果你在乙個以上的執行緒中使用同一塊資料,那麼你必須保護它。我所謂的「使用」,一般而言包括讀取,與之作比較,寫入,更新,改變,或任何其他操作,只要會用到變數           名稱的都算;

3)如果是乙個基礎的型別,32位或更小(例如乙個dword或int),並且是單獨資料(沒有所謂邏輯一致性的問題),那麼你可以讀它或用值來與之作比較。如果你需要改變它,請使用interlocked...()函式,你應該把變數設為volatile。

Win32多執行緒之概述

win32多執行緒之概述 多執行緒在剛開始工作時也沒怎麼用,只是有時介面卡住了 一拖動程式主介面介面就會出現白色區域,久久不能消失,慢慢的明白主介面使用主線程,在單一執行緒通道中,乙個任務沒有完成,當前的所有工 作都將被鎖定,拖動介面會產生wm paint訊息,由於主線程被鎖定那麼這個訊息將不被程式...

Win32多執行緒之核心物件

createthread 傳回兩個值,用以識別乙個新的執行緒。第乙個值是個handle,這也是createthread 的返回值,大部分與執行緒有關的api函式都需要它。第二個值是由lpthreadid帶回來的執行緒id。執行緒id是乙個全域性變數,可以獨一無二地表示系統中任一程序中的某個執行緒。a...

Win32多執行緒之核心物件

createthread 傳回兩個值,用以識別乙個新的執行緒。第乙個值是個handle,這也是createthread 的返回值,大部分與執行緒有關的api函式都需要它。第二個值是由lpthreadid帶回來的執行緒id。執行緒id是乙個全域性變數,可以獨一無二地表示系統中任一程序中的某個執行緒。a...