[英]ThreadPool implemented with OpenMP
我需要為通用任務實現一個線程池執行器。 我的想法是使用OpenMP進行線程管理。 問題是我對OpenMP還不熟悉。
我試圖用OpenMP找到通用ThreadPool的現有實現,但到目前為止我還沒找到。 我最終想要的是與java.util.concurrent.ThreadPoolExecutor
非常類似的東西:
template <typename Return, typename Task>
class ThreadPoolExecutor
{
public:
ThreadPoolExecutor(int threadCount);
// asyncronous invoke
boost::unique_future<Return> submit(const TaskPtr & task);
// blocking call
std::vector<Return> invokeAll(const std::vector<TaskPtr> & tasks)
{
// submit all tasks + wait for completion
#pragma omp parallel default(shared)
{
// call tasks here
}
}
};
我有幾個關於這種方法的問題:
是否存在使用OpenMP for C ++的線程池實現? [我知道我可以用boost :: asio :: io_service實現threadpool,但我寧願不依賴它]
通過我的設計 - 我們如何保證OpenMP線程將由具體的ThreadPoolExecutor實例“擁有”? 對於所有實例,它們不應該是靜態的。
感謝您對此方法的任何建議和建設性批評以及其他實現的建議。
總結一下:如評論中所述,OpenMP不是實現通用線程池或執行器的選項,因為:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.