boost::thread使用方法

这篇博客详细介绍了如何使用Boost库中的thread类。包括默认构造函数、带参数的构造函数来创建线程,以及如何通过join和timed_join方法控制线程的执行。此外,还提到了interrupt方法来中断线程以及thread类在命名空间和线程组操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先调用thread的构造函数

thread();

Effects:

Constructs a boost::thread instance that refers to Not-a-Thread.

Throws:

Nothing

解释:这个构造函数并不附加线程,自然无法启动

template<typename Callable>
thread(Callable func);

Preconditions:

Callable must by copyable.

Effects:

func is copied into storage managed internally by the thread library, and that copy is invoked on a newly-created thread of execution. If this invocation results in an exception being propagated into the internals of the thread library that is not of type boost::thread_interrupted, then std::terminate() will be called.

Postconditions:

*this refers to the newly created thread of execution.

Throws:

boost::thread_resource_error if an error occurs.

Callable可以为一个静态或全局函数指针,也可以是一个拥有operator()函数的类,新建立的线程将会调用该函数或operator(),类似Go()。

Thread Constructor with arguments
template <class F,class A1,class A2,...>
thread(F f,A1 a1,A2 a2,...);

Preconditions:

F and each An must by copyable or movable.

Effects:

As if thread(boost::bind(f,a1,a2,...)). Consequently, f and each an are copied into internal storage for access by the new thread.

Postconditions:

*this refers to the newly created thread of execution.

Throws:

boost::thread_resource_error if an error occurs.

Note:

Currently up to nine additional arguments a1 to a9 can be specified in addition to the function f.

 

调用thread::join()将会执行新线程,该函数会阻塞calling thread直至新线程执行结束

调用thread::timed_join()将会执行新线程,该函数会阻塞calling thread直至传入参数所规定的时间结束

 

控制运行中的线程

void interrupt();

static void sleep(system_time const& abs_time);
static void yield();

 

用于调用当前线程

#include <boost/thread/thread.hpp>

class thread_group:
    private noncopyable
{
public:
    thread_group();
    ~thread_group();

    template<typename F>
    thread* create_thread(F threadfunc);
    void add_thread(thread* thrd);
    void remove_thread(thread* thrd);
    void join_all();
    void interrupt_all();
    int size() const;
};

用于线程组操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值