两个线程按特定时间顺序交替执行
来源:互联网 发布:按option无法切换mac 编辑:程序博客网 时间:2024/05/09 10:54
1、用到setitimer()函数,设定定时器
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
运行效果如下:
1 0
- 两个线程按特定时间顺序交替执行
- 两个线程交替执行
- 两个线程交替执行
- 【多线程】两个线程 交替执行
- java两个线程交替执行
- 两个线程交替执行,一个打印1-52;一个打印A-Z;打印顺序为12A34B56C.....5152Z
- 两个线程执行生产 * 两线程执行消费 * 依次交替循环
- java中按顺序执行两个线程的方法
- 两个线程交替打印ABABAB
- 两个线程交替打印ABABAB
- 两个线程交替打印ABCDEF
- 两个线程的交替打印
- 线程交替执行的代码
- 线程交替有序执行任务
- java 中的wait和notify以及synchronized的使用,实现两个线程交替执行
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法一)
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法二)
- 黑马程序员——Java对象
- LeetCode 17 Letter Combinations of a Phone Number(电话号码的字母组合)
- Masonry介绍与使用实践:快速上手Autolayout
- hdu5504 GT and sequence(BestCoder Round #60 )
- hdu5505(好题)
- 两个线程按特定时间顺序交替执行
- softMax(2)---predict实现
- hdu1251 统计难题 字典树
- 基站定位属性
- 网络获取json解析
- Linux vi指令详解
- Winpcap 链接 VS2013 小提示
- Insert & delte elements in doublely linked list
- JDBC-Java程序向mysql中插入数据的中文乱码