Re: Visual C++ multi-threading的問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章