当前位置: 技术问答>linux和unix
线程控制问题,急急急
来源: 互联网 发布时间:2016-06-23
本文导语: 最近在弄个程序,遇到这个问题:就是在主函数中创建两个线程,一个用于运行自己弄的定时器程序,一个运行其他的处理程序(该程序是个死循环),现在希望在定时器中定时的时间一到,处理线程又重头开始...
最近在弄个程序,遇到这个问题:就是在主函数中创建两个线程,一个用于运行自己弄的定时器程序,一个运行其他的处理程序(该程序是个死循环),现在希望在定时器中定时的时间一到,处理线程又重头开始运行(期间不停止等待),该如何实现?不用在定时到时把处理线程先杀死然后再创建个一样的处理线程吧??
|
listenSignal可以这样实现:
sigset_t sigset;
int c;
sigemptyset(sigset);
sigaddset(sigset, SIGUSR1);
sigwait(&sigset, &c);
signalSend可以使用pthread_kill实现:
pthread_kill(tid, SIGUSR1);
其中tid是thread2的线程好, 可以由thread2在开始的使用使用pthread_self()取得.
不过,如果楼主只是要thread2在一定的时间内重复运行一段程序的话,是不需要thread1这样启动一个线程做为定时器的.只要thread2自己设一个计时器,在调用listenSignal的地方使用sleep或者nsleep就行了.