怎么让一个进程一直循环定时执行?C实现

zts_kernel 2012-09-09 04:03:52
循环部分是while(1)
但是cpu占用率100%

怎么实现进程在没收到定时信号时,进入睡眠,不占用cpu,等接受到定时信号时再执行,执行完之后继续等待,睡眠。
一直循环下去

...全文
952 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2012-09-10
  • 打赏
  • 举报
回复
void alarm_handler();

main()
{
signal(alarm, alarm_handler);
while (1)
pause();
}
赵4老师 2012-09-10
  • 打赏
  • 举报
回复
Windows:Sleep(ms);
Linux:usleep(us);
zts_kernel 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
Windows:添加计划任务
Linux:crontab
[/Quote]
cron是分钟级别的。
zts_kernel 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 4 楼 的回复:
楼上说得都太简单了,会计楼主看不明白。
把楼上各位百度一下

或看一下《Windows核心编程》(假设你在windows下编程)

或者学习一下C++11的thread库

是linux
[/Quote]
你这个方法可行,我多了个分号
zts_kernel 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 4 楼 的回复:
楼上说得都太简单了,会计楼主看不明白。
把楼上各位百度一下

或看一下《Windows核心编程》(假设你在windows下编程)

或者学习一下C++11的thread库

是linux
[/Quote]
你这个方法可行,我多了个分号
赵4老师 2012-09-10
  • 打赏
  • 举报
回复
Windows:添加计划任务
Linux:crontab
xmu_才盛 2012-09-10
  • 打赏
  • 举报
回复
声明一个定时器线程, 主线程等待定时器事件就行了。

可以把定时器中 设置一个事件, 到时间后就给主线程 解掉这个事件,
然后主进程 等待这个事件, waitforsingleobject(event)
xmu_才盛 2012-09-10
  • 打赏
  • 举报
回复
声明一个定时器线程, 主线程等待定时器事件就行了。

可以把定时器中 设置一个事件, 到时间后就给主线程 解掉这个事件,
然后主进程 等待这个事件, waitforsingleobject(event)
zts_kernel 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
void alarm_handler();

main()
{
signal(alarm, alarm_handler);
while (1)
pause();
}
[/Quote]
cpu占有率还是100%呀
mujiok2003 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

方法太多了,

FIFO,SOCKET,消息队列,共享内存,信号量
[/Quote]

是的,有很多选择。
zts_kernel 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
楼上说得都太简单了,会计楼主看不明白。
把楼上各位百度一下

或看一下《Windows核心编程》(假设你在windows下编程)

或者学习一下C++11的thread库
[/Quote]
是linux
zts_kernel 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
waitForSingleObject,设定一个事件,再while死循环中等待此事件,如果事件触发就做一次循环。你只需要再固定时刻触发事件即可
[/Quote]
while死循环 cpu占用率是100%
zts_kernel 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
方法太多了,

FIFO,SOCKET,消息队列,共享内存,信号量
[/Quote]
具体一点吧, 最好能给个事例代码。
AndyZhang 2012-09-09
  • 打赏
  • 举报
回复
waitForSingleObject,设定一个事件,再while死循环中等待此事件,如果事件触发就做一次循环。你只需要再固定时刻触发事件即可
竞天问 2012-09-09
  • 打赏
  • 举报
回复
楼上说得都太简单了,会计楼主看不明白。
把楼上各位百度一下

或看一下《Windows核心编程》(假设你在windows下编程)

或者学习一下C++11的thread库
Gloveing 2012-09-09
  • 打赏
  • 举报
回复
GUI程序--》设置定时器
CUI程序--》主程序处创建一个全局的Mutex/信号量,WaitForSingleObject等待信号;
开启一个线程,得到Mutex/信号量,并计时,计时结束,释放Mutex/信号量,
主线程Mutex/信号量 有信号,继续执行下面的代码
qq120848369 2012-09-09
  • 打赏
  • 举报
回复
方法太多了,

FIFO,SOCKET,消息队列,共享内存,信号量
naoshi 2012-09-09
  • 打赏
  • 举报
回复
sleep()

70,037

社区成员

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

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