C语言控制台程序,如何实现定时器

冉航--小虾米 2010-11-30 06:28:13

大家好:
我原来知道在MFC程序里,可以设定定时器,用WM_TIMER事件。


但是,在C语言控制台程序里,如何实现定时器功能,而且需要多个定时器,因为我有好几个操作它们操作的时间

间隔都各不相同。


我的想法是: 有几个操作,就创建几个线程,然后 每一个线程 创建一个事件,调用waitforsignleObject(....)

等事件的信号态,把超时参数 设定的都不一样,这样的话就可以实现 各自操作 都 具有 自己的间隔时间。


大家的想法是什么?请赐教。
...全文
484 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joseph-Growth 2011-12-09
  • 打赏
  • 举报
回复
定时器不是一个线程,它是根据系统时钟滴答来计数的,系统有个滴答函数,每隔1个机器时间都会滴答一次。准确来说与硬件相关,系统默认的,所以不会是线程。
冉航--小虾米 2010-12-01
  • 打赏
  • 举报
回复
timeSetEvent也可以用。
冉航--小虾米 2010-12-01
  • 打赏
  • 举报
回复
大家回答的很好,对我很有帮助。我想问一下,每一个定时器是否相当于一个线程
quwei197874 2010-12-01
  • 打赏
  • 举报
回复
用sleep(),
yiruirui0507 2010-11-30
  • 打赏
  • 举报
回复
win 32 api

CreateWaitableTimer //创建计时器

OpenWaitableTimer //打开某个存在的计时器


SetWaitableTimer //设定计时器的时间参数,以及回调函数


CancelWaitableTimer //顾名思义。取消
  • 打赏
  • 举报
回复
不在MFC中也可以吧:

VOID CALLBACK myFunc(
HWND hwnd, // handle of window for timer messages
UINT uMsg, // WM_TIMER message
UINT idEvent, // timer identifier
DWORD dwTime // current system time
)
{
cerr <<"rabbit , I love you!\n"<<endl;
}

UINT interTime = 1000;
MSG msg;
int send = SetTimer(NULL,NULL, interTime,(TIMERPROC)myFunc);
while (GetMessage (&msg, NULL, 0, 0))
{
if(msg.message == WM_TIMER)
{
cout<<"WM_TIMER" << endl;

}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
KillTimer(NULL, send);
skyworth98 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 candpointer 的回复:]
win 32 api

CreateWaitableTimer //创建计时器

OpenWaitableTimer //打开某个存在的计时器


SetWaitableTimer //设定计时器的时间参数,以及回调函数


CancelWaitableTimer //顾名思义。取消
[/Quote]

sp........
CandPointer 2010-11-30
  • 打赏
  • 举报
回复
win 32 api

CreateWaitableTimer //创建计时器

OpenWaitableTimer //打开某个存在的计时器


SetWaitableTimer //设定计时器的时间参数,以及回调函数


CancelWaitableTimer //顾名思义。取消
至善者善之敌 2010-11-30
  • 打赏
  • 举报
回复
你这所谓的多线程之间需要通讯吗?
dubiousway 2010-11-30
  • 打赏
  • 举报
回复
写一个定时器函数,但这个函数需要的几个关键时间参数,不要用这个函数的局部变量,而使用由外部传入的变量。这样每加一个计数器,就设置一个和之相关的(结构)变量,每次的时间变化都放在各自相关的结构变量里。

或者直接封装成类,看着更直观些。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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