簡體   English   中英

使用Boost庫的C ++中的線程池

[英]Threadpool in c++ using Boost Library

我想使用線程池編寫多線程合並排序,因此下載了boost庫。 我是C ++的新手,很難理解如何運行與源代碼一起提供的示例程序。 這里是從我downlaoded ..源http://threadpool.sourceforge.net/ ....這是有下載部分...任何幫助表示贊賞。

另一個用於管理線程的工具是TBB Intel線程構建模塊 在那里,您甚至已經有了合並排序的實現,請參見“ tbb / parallel_sort.hpp”(但是該實現效率不高,因為它需要最少的O(n)時間,與線程數無關)。

我對那個特定的線程池庫不熟悉(順便說一句,它不是Boost的一部分),但是線程池的一般概念非常簡單。 該類必須具有類似於enqueue(std::function<void()> fn); 界面,您所需要做的就是包裝函數以獲取所需的函數對象,通常可以使用std::bind或lambda函數完成此操作。 線程池會將您的函數對象保留在隊列中,直到有可用的線程來執行它為止。 那時,它只是調用fn() 關於並行排序,您可以編寫一個快速排序版本,該版本非常適合並行化: http : //en.wikipedia.org/wiki/Quicksort

PS std::function ,對應的std::bind和lambda函數是C ++ 0x的一部分,您也可以在Boost中找到替代項。

對於您對自托管線程的要求,OpenMP將是一個更好的選擇。 此概述中包含一個合並排序示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM