当前位置: 技术问答>linux和unix
linux编程:timer模拟线程,怎么实现?谢谢!
来源: 互联网 发布时间:2016-11-22
本文导语: 本帖最后由 alwang_2008 于 2011-04-06 10:11:27 编辑 原来是用create_process这个函数创建线程实现一个功能,若是用timer怎么模拟线程?我是linux编程菜鸟,有没有大侠给个示例?谢谢!! | #include void...
|
#include
void f(int sig)
{
printf("ping");
alarm(10);
}
main()
{
signal(SIGALRM, f);
alarm(10);
// do what you like ...
}
void f(int sig)
{
printf("ping");
alarm(10);
}
main()
{
signal(SIGALRM, f);
alarm(10);
// do what you like ...
}
|
如果用定时器的话,是不是可以通过SIGALRM信号来实现
设置一个信号处理动作,其中ping远端IP
SIGALRM信号触发时调用这个函数
设置一个信号处理动作,其中ping远端IP
SIGALRM信号触发时调用这个函数
|
f里面的alarm就是再次注册一下.
|
简单的问题不要复杂化了吧,如果不是要求很精确的话,你直接sleep个几秒就行了
除非你线程不仅仅做这个ping,还做其他操作,不过即使是这样的话,你也可以独立出一个只做ping的线程
使用信号还会导致部分系统调用出错,例如recv
只是点建议,仅供参考
当然也可以实现一个timer,这个的应用范围也是很广的
|
Linux下,所谓线程也不过是个异步的callback回调函数而已。
用timer模拟线程,启动timer,传入回调函数。
主要是timer的设计上看你模拟的线程有啥要求
用timer模拟线程,启动timer,传入回调函数。
主要是timer的设计上看你模拟的线程有啥要求