首先调用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 typeboost::thread_interrupted
, thenstd::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 eachA
n must by copyable or movable.
Effects:
- 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
toa9
can be specified in addition to the functionf
.
调用thread::join()将会执行新线程,该函数会阻塞calling thread直至新线程执行结束
调用thread::timed_join()将会执行新线程,该函数会阻塞calling thread直至传入参数所规定的时间结束
控制运行中的线程
void interrupt();
static void sleep(system_time const& abs_time);
static void yield();
-
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()
用于调用当前线程
#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; };
用于线程组操作