您的位置:首页 > 其它

boost::thread使用方法

2012-10-01 15:54 302 查看
首先调用thread的构造函数

Default
Constructor

thread();


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

Throws:
Nothing

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

Thread
Constructor

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
A
n must by copyable or movable.

Effects:
As if
thread(boost::bind(f,a1,a2,...))
.
Consequently,
f
and each
a
n 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();


Namespace
this_thread

Non-member function
get_id()

Non-member function
interruption_point()

Non-member function
interruption_requested()

Non-member function
interruption_enabled()

Non-member function
sleep()

Non-member function
yield()

Class
disable_interruption

Class
restore_interruption

Non-member function template
at_thread_exit()


用于调用当前线程

Class
thread_group

Constructor
Destructor
Member function
create_thread()

Member function
add_thread()

Member function
remove_thread()

Member function
join_all()

Member function
interrupt_all()

Member function
size()


#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;
};

用于线程组操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: