呵呵,今天要寫乙個效能測試的程式,由於之前用過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...