使用boost中的執行緒池

2021-07-14 22:25:41 字數 1142 閱讀 9102

呵呵,今天要寫乙個效能測試的程式,由於之前用過boost的thread,所以就採用了boost的thread庫

程式大概是根據指定的引數來生成多個執行緒來進行乙個操作…本來滿簡單的..但是之前時候不知道boost有程序組的支援…所以只能自己動態的建立一大堆 thread ..放到乙個容器中..然後在遍歷join下,然後再在結束前delete他們,很麻煩..不過最後還是實現了。不過就在完成之後,同事曉哲給我看了一下他的程式..用到了boost的thread_group ,這才發現原來boost也有程序組的支援阿…暈….剛才試著寫了乙個簡單的程式…呵呵,根據指定引數生成指定個數的子程式… 很簡單阿..再也不用遍歷一遍每乙個join一下了..join_all就搞定了..

下面是**,呵呵,很簡單吧

#include

#include

#include

using

namespace boost;

using

namespace std;

void runchild(

const

int n)

int main(

int argc, char

** argv)

num =

atoi

(argv[1]);

cout

<<

"我是主程式,我準備產生"

<< num <<

"個子執行緒"

<< endl;

for(

int i =

0; i < num; i++

)cout

<<

"我是主程式,我在等子執行緒執行結束"

<< endl;

threads.join_all()

;return0;

}

編譯&測試(我在我的ubuntu下測試的)

> g++ threadgroup.cc -lboost_thread

> ./a.out 3

如果在freebsd4下編譯的話,如果使用pthread作為執行緒實現的話,需要明確指出pthread使用執行緒庫,而且預設的template深度好像不能滿足boost的需求..需要在編譯時加上:

-ftemplate-depth-20 -boost

本文**

boost建立執行緒池 boost庫使用 執行緒類

boost 庫中提供了兩種建立執行緒的方式,一種是單個執行緒建立,另外一種是執行緒組的建立,進行執行緒管理 thread 就是沒有組管理,與我們在linux下使用pthread create 函式是一樣的,只是在c 11中,引入了boost中的thread方法 包含標頭檔案 include usin...

boost 中使用 執行緒池threadpool

boost的thread庫中目前並沒有提供執行緒池,我在sorceforge上找了乙個用boost編寫的執行緒池。該執行緒池和boost結合的比較好,並且提供了多種任務執行策略,使用也非常簡單。使用threadpool 這個執行緒池不需要編譯,只要在專案中包含其標頭檔案就可以了。寫乙個簡單的例子 i...

boost擴充套件工具 執行緒池 threadpool

boost擴充套件工具 執行緒池 threadpool 使用threadpool需要鏈結boost的兩個共享庫 boost thread boost system 如果是靜態鏈結那就還得動態鏈結pthread庫 並且include 在使用threadpool時,編譯會報錯 task adaptors...