Re: Visual C++ multi-threading的問題

看板Programming作者 (如雲如風的人生)時間15年前 (2010/08/14 09:18), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《eeakk (阿毛)》之銘言: : 第一次寫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. : 如果我還是想要可以讓使用者調整讀取間隔 : 一般有什麼方法可以讓程式效能高一點? 回問題1,2 mutex是用來保護資料的, 確保讀取的thread在讀完之前資料都不會被變更造成不同步 問題3 每次讀取的時候只先讀一小段(例如:資料的更新時間),比對是否有變動 有得話才讀完全部 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.92.148
文章代碼(AID): #1CPUxulh (Programming)
討論串 (同標題文章)
文章代碼(AID): #1CPUxulh (Programming)