OpenThreads库的使用-Thread
来源:互联网 发布:库卡焊接机器人编程 编辑:程序博客网 时间:2024/04/29 22:52
Thread简介
OpenThread库,提供了一个Thread类,供用户创建自己的线程。其使用非常方便,用户只需要继承自OpenThreads::Thread类,然后自己重写run接口即可。
Thread程序示例
下面程序,使用一个线程,去卖票。g_ticketCounts表示当前可用的票的数量。
#include <OpenThreads/Thread>#include <iostream>int g_ticketCounts = 100;class TicketSellThread : public OpenThreads::Thread{public: virtual void run() { for (int i = 0; i < 50; i++) { g_ticketCounts--; std::cout << g_ticketCounts << std::endl; } }};int main(int argc, char** argv){ TicketSellThread ticketSellThread1; ticketSellThread1.start(); //等待ticketSellThread1运行完,然后再让主线程往下运行 while(ticketSellThread1.isRunning()) OpenThreads::Thread::YieldCurrentThread(); return 0;}
线程的取消
线程的取消,是通过cancle函数来实现的。重写此函数,然后外界调用。这里通过一个bool变量,_done,来表示线程是否可以结束。主线程通过调用cancel,把_done设置为true,然后TicketSellThread判断_done的值,结束run函数的运行,从而达到取消线程的目的。
#include <OpenThreads/Thread>#include <iostream>int g_ticketCounts = 100;class TicketSellThread : public OpenThreads::Thread{public: TicketSellThread():_done(false){} virtual void run() { for (int i = 0; i < 50; i++) { if (_done) { return; } g_ticketCounts--; std::cout << g_ticketCounts << std::endl; } } virtual int cancel() { _done = true; return 0; }private: bool _done;};int main(int argc, char** argv){ TicketSellThread ticketSellThread1; ticketSellThread1.start(); OpenThreads::Thread::microSleep(3000); //主线程休眠一会,让ticketSellThread1运行一会 ticketSellThread1.cancel(); //取消售票线程 //等待ticketSellThread1处理完善后工作,然后再让主线程往下运行 while(ticketSellThread1.isRunning()) OpenThreads::Thread::YieldCurrentThread(); return 0;}
0 0
- OpenThreads库的使用-Thread
- OpenThreads库的使用-Mutex
- OpenThreads库的使用-Atomic
- OpenThreads库的使用-Condition
- OpenThreads使用-Barrier
- OpenThreads使用-Block
- OpenThreads使用-BlockCount
- OpenThreads线程库
- OpenThreads线程库
- OpenThreads
- OSG源码解读----OpenThreads库
- OpenThreads线程的创建与控制
- Boost::thread库的使用
- 使用boost的thread库
- Boost::thread库的使用
- Boost::thread库的使用
- Boost::thread库的使用
- Boost::thread库的使用
- Linux多线程编程(不限Linux)
- Machine Learning in Python
- Discuz!帖子刷新后阅读数增加随机值的方法
- 在线学习平台
- UOJ12暨(UOJ EASY ROUND 1)T3
- OpenThreads库的使用-Thread
- nginx重写
- Online Coding
- Solr集群搭建
- linux创建用户、设置权限
- Discuz!开发之模板标签语法学习
- 折半插入排序
- 题目二:约瑟夫生者死者游戏
- 【Asp.Net MVC】Controller和View之间传递数据