定时器能不能实现多线程

mzmbird 2012-10-21 03:47:56
程序中必须使用定时器,但是在处理数据时主界面会很卡。
请问有没用方法能达到多线程的效果。
...全文
209 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_ask_who 2012-10-21
  • 打赏
  • 举报
回复
界面的话比较麻烦,数据处理还好说。
如果你不是界面重绘而仅仅是数据处理,开个线程在里面用Sleep或者WaitObject,共享数据加锁,不过时间不准。还有使用GetTickCount,精度在10ms左右,然后隔20ms Sleep一次,看你的定时时间是否是其整数。
hdg3707 2012-10-21
  • 打赏
  • 举报
回复
建立一个多线程,专门处理数据,定时器函数功能只加个处理标志,这个处理标志是个工程全局变量(不是类的全局变量),具体这么做:
在CPP文件里开始处:
BOOL m_Ok;//等TURE时线程处理数据,等于FALSE停止处理数据
定时器函数:
m_Ok=TRUE;
线程函数:
while(1)
{
if(m_Ok)
{
处理数据
m_Ok=FALSE;
}
}
傻X 2012-10-21
  • 打赏
  • 举报
回复
SetTimer定时器的技术是中断技术。
硬件计时。然后出发WM_TIME消息,调用回调。走的还是主线程的消息。

结论:数据量小的时候,由于现在计算机的性能比较好,效果和多线程无异。
但是处理数据多,时间长了就不行了。还是会阻塞主界面的。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧