`
labile
  • 浏览: 43713 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Boost.Thread库中boost::thread() 无启动参数的解决方法

阅读更多
/**
 * Create only by new operator, delete by owner
 * joinable m_thread
 */
class LaThread {
   
private:
    boost::thread* m_thread;
 
    static static_run(LaThread* This) {
       This->run();
    }
 
protected:
    virtual void run() = 0;
 
public:
    LaThread() : m_thread(NULL) {}
    /**
     * Requires: threat ended
     */   
    virtual ~LaThread(){
       if( m_thread != NULL )
           delete m_thread;
    }
 
public:
    void start() {
       if( m_thread != NULL ) {
           throw std::exception(_T("m_thread != NULL"));
       }
       m_thread = new boost::thread( boost::bind(static_run, this) );
    }
 
    void join() {
       if( m_thread == NULL ) {
           throw std::exception(_T("m_thread == NULL"));
       }
       m_thread->join();
    }
};
 
class TestThread : public LaThread {
private:
    int arg;
public:
    TestThread( int arg ) {
       this->arg = arg;
    }
public:
    virtual void run() {
       _RPT3(_CRT_WARN, "[%d]\t[%s]\t[%s]\n", ::GetCurrentThreadId(), _T("Hi I'm new thread!"), __FUNCTION__);             
    }     
};
主要看点是:
new boost::thread( boost::bind(static_run, this) );
boost::bind使可以使 static_run(LaThread* This) 变成满足 boost::thread ( boost::function0 fuc )要求的函数。
C++ ISO 1998 的确并不是一个STL Container那么简单啊。还有boost::mem_fn呢。
解决这类别扭问题的方法的:
google: Boost Thread parameter
回复者(可能是Thread文档的开发者),说这样的说明将会加入到下个版本的文档中。


分享到:
评论

相关推荐

    boost.thread.1.3.5中文翻译

    Boost.Thread是Boost库中的一个重要组成部分,它允许开发人员使用便携的C++代码来处理多线程编程,尤其在涉及共享数据的情况下。以下是从标题、描述和部分文档内容中提炼出的关键知识点: ### Boost.Thread 1.3.5...

    boost库1.68版本windows下编译的dll和lib库

    在本案例中,我们关注的是Boost库的1.68版本,该版本已在Windows环境下使用Visual Studio 2017进行编译,并生成了用于动态链接(dll)和静态链接(lib)的库文件。 首先,我们要理解动态库(dll)和静态库(lib)的...

    boost安装下载-boost.rar

    Boost库是C++编程语言中的一个开源库集合,它提供了大量的高效、跨平台的库,以支持各种编程任务,如算法、数据结构、数学运算、并发处理、文件系统操作等。Boost库被广泛用于提高软件的性能和可维护性,同时也被C++...

    boost线程库源码,程序员自用

    Boost线程库是C++开发中的一个强大工具,它为C++标准库提供了额外的线程支持。Boost库本身是一个开源集合,包含了各种各样的高质量、跨平台的C++库,其中线程库(Boost.Thread)是提升C++多线程编程能力的重要组件。...

    编译好的完整boost库

    例如,如果你想使用Boost的线程库(Boost.Thread),你需要#include <boost/thread.hpp>。这个目录下的子目录按照不同的库进行组织,如date_time、filesystem、math、program_options等,涵盖了Boost库的各个方面。 ...

    boost库1.68版本Linux下编译的动态库和静态库

    6. **使用编译好的库**:在项目中使用编译的Boost库时,需要链接对应的动态库(如`-lboost_thread -lboost_system`)或者静态库,并确保库的路径被系统搜索路径(`LD_LIBRARY_PATH`或`DYLD_LIBRARY_PATH`)包含。...

    boost thread dll 应用

    3. **编写代码**:在源代码中,包含必要的Boost头文件,如`#include <boost/thread.hpp>`,然后使用提供的类和函数进行多线程编程。 4. **运行与调试**:编译并运行项目,如果一切配置正确,你应该能在控制台或其他...

    深入实践Boost:Boost程序库开发的94个秘笈(中文版)

    5. **并发编程**:Boost.Thread库提供了线程、互斥量、条件变量等工具,支持多线程编程,帮助开发者编写高效的并发应用。 6. **正则表达式**:Boost.Regex库实现了C++标准库中未提供的正则表达式功能,提供更强大的...

    Boost.Asio C++ Network Programming

    ### Boost.Asio C++ Network Programming #### 知识点概览 - **Boost.Asio库简介** ...本书不仅涵盖了 Boost.Asio 的基础用法,还介绍了如何运用高级特性来解决实际问题,是一本值得深入学习的重要参考书籍。

    arm架构下的boost库文件

    本文将详细介绍Boost库在ARM架构下的编译过程以及如何在项目中应用。 首先,让我们了解一下Boost库的主要特点和组件: 1. **多线程支持**:Boost.Thread库提供了线程管理和同步原语,如互斥量、条件变量和future/...

    BOOST程序库完全开发指南(PDF高清版)

    1. **模板元编程**:BOOST库中的Boost.MPL(Meta-Programming Library)提供了一种在编译时进行计算的方法,这对于创建高度定制化和高效的代码非常有用。 2. **智能指针**:如Boost.PtrContainer和Boost.SmartPtr,...

    boost的Thread.lib(VC 6.0++)

    描述中提到,这个压缩包包含了编译好的`Thread.lib`库文件以及相关的头文件(hpp),这意味着开发者可以直接链接这个库,无需自行编译Boost库,从而节省了时间和资源。 在实际使用中,首先需要将`lib`目录下的`...

    Boost.Test资源及示例

    在项目设置中,确保选择“生成动态库”选项,并正确配置链接器设置,以便库文件能够找到Boost.Test库。 2. 定义测试套件和测试案例:在库中,通过`BOOST_AUTO_TEST_SUITE`和`BOOST_AUTO_TEST_CASE`宏定义测试套件和...

    boost1.36中文帮助

    2. **多线程支持**:Boost.Thread库提供了C++标准库中缺失的多线程功能,包括线程创建、同步原语(如互斥量、条件变量、信号量)等。 3. **算法**:Boost.Algorithm库包含了一些非标准的通用算法,如字符串匹配、...

    Boost程序库完全开发指南_深入Cpp.准标准库及库详解

    5. 熟悉Boost库在并发和多线程编程中的应用,如Boost.Thread和Boost.Asio。 6. 探索Boost库在序列化、错误处理和异常安全编程等方面提供的解决方案。 通过深入学习和实践,开发者不仅能熟练掌握Boost库,还能提升...

    Boost 库入门.chm.zip

    Boost库是C++编程语言中一个重要的开源库集合,它为C++标准库提供了大量的扩展和补充,包含了许多高效、高质量的工具,涵盖了算法、数据结构、智能指针、模板元编程、多线程、序列化、图形界面等众多领域。...

    Boost_thread库例程

    **Boost_thread库例程** Boost_thread库是Boost库的一部分,它是C++标准库的一个强大补充,提供了线程管理和同步原语。...通过这些例程,你可以掌握如何在实际项目中有效利用Boost_thread来解决多线程编程中的问题。

    Boost.C++.Application.Development.Cookbook

    - **实战案例**:通过一系列具体案例演示如何综合运用 Boost 库中的不同组件来解决实际问题。 #### 三、核心知识点详解 1. **Boost 库简介**: - **什么是 Boost**:Boost 是一个由众多独立的免费 C++ 库组成的...

    boost 中文手册

    Boost库是C++编程语言的一个开源库,它包含了大量的库组件,旨在提升C++的功能性和效率,尤其是在标准模板库(STL)的基础上提供了更多的工具。Boost库由全球的C++专家和社区成员共同维护,它的目标是推动C++的发展,...

Global site tag (gtag.js) - Google Analytics