posix多執行緒和boost多執行緒學習筆記

2021-06-12 01:26:15 字數 2790 閱讀 7745

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...