boost线程thread详解,boost库常用总结
通过上面的学习,基本可以使用线程了,但是如何让线程在类中运行成员函数呢?使得包装使用更加方便。接下来,看看这个例子,如下所示:
//boost_013.cpp:定义控制台应用程序的入口点。
#include stdafx.h
#包含boost/thread.hpp
#包含boost/bind.hpp
#包含boost/thread/mutex.hpp
//封装线程组运行的类,演示类成员函数作为线程组运行函数的使用。
//软件开发人员:蔡2013-04-05
//QQ: 9073204
类CThreadBase
公共:
void Start(int nMaxCount)
//循环创建N个线程。
for(int I=0;i nMaxCount我)
m _ thread group . create _ thread(boost:bind(CThreadBase:Run,this,I));
无效停止(无效)
//等待所有线程退出。
m _ thread group . join _ all();
虚拟空运行
int nTemp=nVal * nVal
//下面的输出需要锁定,多线程不能共享输出。
静态boost:mutex mutex out;
boost:lock _ guard boost:mutex autoLock(mutex cout);
std:cout 线程运行:[ nVal ] nTemp STD:endl;
私人:
//定义一个线程组对象。
boost:thread _ group m _ thread group;
在此示例中,封装了一个类CThreadBase。这个类可以表示一个线程可以运行或者多个线程可以运行,线程可以运行类中的成员函数,这样更容易添加和管理代码。在这个例子中,我们应该注意粘结剂的使用,如下:
m _ thread group . create _ thread(boost:bind(CThreadBase:Run,this,I));
首先获取成员函数的指针,然后传递这个指针,然后就可以调用类实例化的成员函数了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。