posix多執行緒(linux):
介紹:
null
標頭檔案:
pthread.h
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
函式傳入值:
thread: pthread_t
型別的執行緒標識
pthread_attr_t
:執行緒屬性
start_routine
:執行緒函式,必須定義為
void *func(void *arg)
,如果是類成員作為執行緒函式,必須是靜態的。不接受
boost
中的函式物件
arg:執行緒函式的引數,如果是多個,打包成乙個結構體,傳入結構體指標
函式返回值:
成功:0
失敗:其他
使用形式:
void *func1(void *arg) {}
pthread_t t1, t2;
pthread_create(&t1, null, func1, null);
void *func2(int a, int b) {}
struct arg ;
struct arg arg = ;
pthread_create(&t2, null, func2, &arg);
boost 執行緒:
介紹:
建立後即開始執行,執行緒函式接受任意形式的普通函式、類成員函式,可以使用
boost::bind
和boost::function
標頭檔案:
boost/thread.hpp
資料型別:
thread
相關函式
thread(f f, a1 a1, a2 a2, ...); //最多9
個引數join();
timed_join()const system_time &wait_until;
interrupt(); //
只有在中斷點才可以被中斷
static yield();
函式傳入值:
f:可執行函式、函式指標,函式物件
an:執行緒函式的引數
函式返回值:
無使用形式:
int func(int a, int b) {}
thread(func, 10, 20); //
使用臨時物件,無法用
join
thread t(func, 10, 20); //
可以用物件呼叫方法
t.join();
boost 執行緒組:
介紹:
類似執行緒池
標頭檔案:
boost/thread.hpp
資料型別:
boost::thread_group
thread* create_thread(f threadfunc);
void add_thread(thread *thrd);
void remove_thread(thread *thrd);
void join_all();
void interrupt_all(); //
只有在中斷點才可以被中斷
int size();
函式傳入值:
threadfunc
:必須是
boost::bind
的返回值或者
boost::function
物件thrd
:執行緒物件指標
函式返回值:
無使用形式:
int func1(int a, int b);
class a ;
a a;
thread_group threads;
threads.create_thread(bind(func1, 10, 20)); //
這樣是錯的:
threads.create_thread(func1, 10, 20);
threads.create_thread(bind(&a::func2, &a, "hello", 10)); // &a, ref(a), a
threads.join_all();
其他:
使用thread_group
和singleton_default
可以建立乙個類似全域性執行緒池的物件,統一管理程式中的
thread
:typedef singleton_defaultthread_pool;
thread_pool::instance().create_thread(...);
boost多執行緒
linux下編譯多執行緒程式 g o 1.out 1.cpp i boost include l boost lib lboost thread 建立執行緒 標頭檔案 namespace boost thread 構造乙個表示當前執行執行緒的執行緒物件 explicit thread const b...
POSIX執行緒多執行緒例子
include include include include define num threads 6 void thread function void arg int main sleep 1 printf waiting for threads to finish.n for lots of...
boost 多執行緒使用
boost有幾種執行緒建立方式,現總結如下 首先看看boost thread的建構函式吧,boost thread有兩個建構函式 1 thread 構造乙個表示當前執行執行緒的執行緒物件 2 explicit thread const boost function0 threadfunc boost...