作者WPC001 (突然觉得自己是孤独的...)
站内Programming
标题Re: [问题] Timer、Thread
时间Thu Mar 11 00:13:23 2010
※ 引述《clarkman (凉雨)》之铭言:
: 我在已经吃掉许多资源的程式下,想要定期接收RS232的资料
: 3. 多线程timer
: 有查到.net有个system.threading.timer,但是程式是mfc,却无法使用
: 很头痛,不知道大家在处理上面有什麽更好得方法吗?
: 有人建议过使用mutli-process,不过又怕os不断的搬资料,反而更慢
: 谢谢
给你几个hint,
1. 建议除了UI外, 额外用4个thread处理
2个是自己写的timer, 2个是专门处理资料的
2. timer建议用64bits的HPET
3. 专门处理资料的thread, 最好有buffer
timer一把RS232资料抓到後, 立刻就丢给别的thread进行资料处理
而timer的程序也就进入睡眠状态, 直到时间事件再次被触发
4. 同步的问题 --> 缓冲区应该要加上Single Lock ,
但能锁住的时间仅是资料存取的极短时间内, 运算应该要跟存取分开
不能在运算时也锁住缓冲区
5. 资料处理完应该先检查缓冲区是否还有资料, 如果有, 应该要继续处理
如果没有, 则进入睡眠, 直到再次被唤起
P.S. 提示已经很多了, 自己查资料, 就别写信来问了 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.195.1.131
1F:推 clarkman:所以是一个负责收资料,一个负责处理资料 125.230.3.169 03/14 02:35
2F:→ clarkman:把这两个拆开给不同的thread吗 125.230.3.169 03/14 02:35
3F:→ clarkman:但是我们的机台已经跑了很吃资源的游戏 125.230.3.169 03/14 02:37
4F:→ clarkman:所以会把底层这个东西抢走太多,导致太慢 125.230.3.169 03/14 02:37
5F:→ clarkman:多拉几条thread会怕context switch更慢 125.230.3.169 03/14 02:38
6F:推 clarkman:因为我们的机台等级不高,加上资源吃太多 125.230.3.169 03/14 02:49
7F:→ clarkman:所以才会担心 125.230.3.169 03/14 02:49