两个线程按特定时间顺序交替执行
2015-10-18 11:03
225 查看
1、用到setitimer()函数,设定定时器
2、boost库用于创建两个线程
3、signal()用于将定时信号与响应函数绑定
源码如下:
编译:g++ thread.cpp -o thread -lboost_thread
运行效果如下:
2、boost库用于创建两个线程
3、signal()用于将定时信号与响应函数绑定
源码如下:
#include<iostream> #include<csignal> #include<sys/time.h> #include<boost/thread/thread.hpp> using namespace std; bool en_transmit=false,en_receive=false; void transmit(void){ cout<<"Transmit called..."<<endl; while(en_transmit){cout<<"";} cout<<"Finished Send..."<<endl<<endl; return; } void receive(void){ cout<<"Receive called..."<<endl; while(en_receive){cout<<"";} cout<<"Finished Recv..."<<endl<<endl; return; } bool period=false; void sigroutine(int signo){ pthread_t send,recv; cout<<signo<<endl; boost::thread_group threads; switch(signo){ case SIGALRM: en_receive=false; en_transmit=true; threads.create_thread(&transmit); break; case SIGVTALRM: en_transmit=false; en_receive=true; threads.create_thread(&receive); break; } return; } int main(){ struct time{ int sec; int usec; }; struct time period; period.sec=5; period.usec=0; struct itimerval value,ovalue,value2; signal(SIGALRM,sigroutine); signal(SIGVTALRM,sigroutine); value.it_value.tv_sec=1; value.it_value.tv_usec=0; value.it_interval.tv_sec=period.sec; value.it_interval.tv_usec=period.usec; setitimer(ITIMER_REAL,&value,&ovalue); value2.it_value.tv_sec=2; value2.it_value.tv_usec=0; value2.it_interval.tv_sec=period.sec; value2.it_interval.tv_usec=period.usec; setitimer(ITIMER_VIRTUAL,&value2,&ovalue); while(1){ pause(); } return 0; }
编译:g++ thread.cpp -o thread -lboost_thread
运行效果如下:
相关文章推荐
- JDBC-Java程序向mysql中插入数据的中文乱码
- 解决此问题:Oracle 删除用户时报 “必须指定 CASCADE 以删除 'SE'”,
- ie678 兼容问题
- 你不知道的JavaScript--Item10 闭包(closure)
- 第三次作业(第二次改进)。
- hdu1251 统计难题 字典树
- 判断一个整数转换成二进制后1的个数
- Winpcap 链接 VS2013 小提示
- Linux vi指令详解
- hdu5504 GT and sequence(BestCoder Round #60 )
- 课后作业
- JS中用execCommand("SaveAs")保存页面兼容性问题解决方案
- iOS开发中——如何保存用户敏感信息(用户名和密码等信息)
- grails邮件服务
- RecyclerView中的ViewType
- hdu5505(好题)
- 图像处理(二十三)基于调色板的图像Recoloring-Siggraph 2015
- Ediplus添加到右键方法
- Ajax实现文件上传
- Masonry介绍与使用实践:快速上手Autolayout