boost线程thread详解,boost库常用总结

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: