看板 Programming 關於我們 聯絡資訊
第一次寫multi-threading 碰到一些問題,觀念不太清楚 希望各位前輩可以給我的意見 我目前是用VC++ 2003開.NET project寫GUI 有個功能是自動從IC更新data 我必須用I2C去一個晶片裡面讀出資料 我現在是拉一個Timer,每一段時間讀取一次 我發現讀取interval太短的話 因為讀取太慢,造成整個程式好像卡住一樣 連按鈕都按不太下去 我目前是不想使用timer 想要開一個thread,在那個thread內做讀取資料的事情 問題1. 如果我讀取資料的function只會被這個thread access到 這是不是代表我不需要用mutex保護呢? 我的想法是反正沒做完的部份下個time slice會繼續做完 也不會有其他的thread進來把一些共用變數內容改掉 如果需要用mutex保護,大概是要保護什麼樣的情況呢? 問題2. 我讀取晶片內部資料的function是另一個USB提供的driver 基本上我就直接呼叫,然後USB晶片幫我去用I2C讀取 muliti-thread,會不會造成我讀取到一半 time slice剛好到了結果被switch走 或者那個driver的讀取function做到一半被switch走造成我讀錯東西呢? 問題3. 如果我還是想要可以讓使用者調整讀取間隔 一般有什麼方法可以讓程式效能高一點? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 66.75.28.157
aecho:跟c#不熟…跟UI有關的,最好都在main thread 59.115.241.8 08/11 20:30
aecho:其它的丟worker thread就還好~ 59.115.241.8 08/11 20:32