作者kevingwn (如云如风的人生)
看板Programming
标题Re: Visual C++ multi-threading的问题
时间Sat Aug 14 09:18:45 2010
※ 引述《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