用线程好,还是用定时器好? 本帖最后由 arpnet99 于 2010-07-22 09:00:48 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得能用线程的话,尽量用线程去实现,毕竟你说的定时器(SetTimer),它是利用CPU中断来实现的,频繁的中断容易挂起程序或者其他影响,这样很不河蟹...再者,线程也可以实现“定时器”同样的效果呀?举例:#define TIMER_SLEEP 10000DWORD WINAPI TimerThread(LPARAM pamaram){ UINT oldTickCount, newTickCount; oldTickCount = GetTickCount(); while(TRUE) { while(TRUE) { newTickCount = GetTickCount(); if(newTickCount - oldTickCount >= TIMER_SLEEP) { oldTickCount = newTickCount; break; } else SwitchToThread(); } // Call you function } return 0;} SetTimer是通过消息处理来实现定时的,要是主线程中某个处理过程太耗时,会导致处理WM_TIMER延后,但是用线程来处理就不会有这样的情况,所以相对来说线程更通用些吧。个人理解。 原来做一个字幕滚动的效果,发现用定时器比用线程效果好,平滑不容易卡,这个也是看具体情况吧。线程脱离了主线程,像一些COM的使用、创建对话框什么的都稍微复杂些,定时器毕竟有个消息队列维护着,感觉上要安全些。 要想尽可能提供cpu的使用率那就多线程。如果不痛不痒那就timer,容易维护。 VFW 设置视频卡为高分辩率时不用预览显示的问题! 数据库数据显示时,使用CListCtrl和使用CDataGrid的优缺点各在哪儿? 初学ADO被搞晕了,麻烦各位大侠指点下,谢谢!! 请教教我怎么写帮助文件? 在VC中如何优化代码的运行速度? 100分请教高手,在线等待,很着急,谢谢了, 祝各位CSDN爱好者:新年鸿运! 有没有谁知道SFC(超任)的开发资料?重谢! 请问这里谁有tcp/ip设计经验,请告诉我该如何上手去学 ? 谁用过SOFTICE? VC如何实现让程序有类似屏保的效果? 求从编辑框中提取数据问题
{
UINT oldTickCount, newTickCount;
oldTickCount = GetTickCount();
while(TRUE)
{
while(TRUE)
{
newTickCount = GetTickCount();
if(newTickCount - oldTickCount >= TIMER_SLEEP)
{
oldTickCount = newTickCount;
break;
}
else
SwitchToThread();
}
// Call you function
}
return 0;
}
但是用线程来处理就不会有这样的情况,所以相对来说线程更通用些吧。个人理解。