[問題] Threadpool function問題
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
std:thread
c++11
問題(Question):
最近在寫一個關於threadpool的作業
我是參考這個人的作法
https://github.com/mbrossard/threadpool/blob/master/src/threadpool.c
不過我是用std:thread, not pthread
我設計的方式就如下:
建立一個class threadpool
在constructor裡面spawn n個thread
然後讓這n個thread去執行一個infinite loop
loop裡要做的事情就是檢查task_queue裡面是否有未完成的工作
若有就把工作完成
若無就繼續在while loop spin
我想最普遍的用法
就是先create一個task object(包含function pointer跟parameter)
然後把task放到task_queue裡面
thread就會去拿這個task然後執行function
不過這個作業比這複雜很多
我要執行的function F是在一個大的class A裡面的public function
所以直觀的作法當然是把function F包成一個task放到threadpool的task_queue裡面
可是function F用了很多private variable, private class, private function
而且class threadpool不能寫在class A底下
要額外寫在threadpool.h
所以事情就變得很複雜
因為我沒辦法把要用到的其他function或是variable等等pass給threadpool裡面的thread
想請問該怎麼設計會比較好呢?
我一直很苦惱的點是
threadpool.h裡面的class threadpool要怎樣才看得到class A裡面全部的東西?
有辦法做到這件事情嗎?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 128.61.8.232
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1478205977.A.B38.html
→
11/04 05:01, , 1F
11/04 05:01, 1F
→
11/04 08:47, , 2F
11/04 08:47, 2F
→
11/04 08:47, , 3F
11/04 08:47, 3F
推
11/04 10:41, , 4F
11/04 10:41, 4F
→
11/04 10:41, , 5F
11/04 10:41, 5F
推
11/04 10:44, , 6F
11/04 10:44, 6F
→
11/04 10:44, , 7F
11/04 10:44, 7F
→
11/04 10:49, , 8F
11/04 10:49, 8F
→
11/04 10:49, , 9F
11/04 10:49, 9F
→
11/04 10:53, , 10F
11/04 10:53, 10F
推
11/04 11:02, , 11F
11/04 11:02, 11F
→
11/04 11:02, , 12F
11/04 11:02, 12F
→
11/04 11:03, , 13F
11/04 11:03, 13F
→
11/04 11:03, , 14F
11/04 11:03, 14F
→
11/04 20:39, , 15F
11/04 20:39, 15F
→
11/04 20:40, , 16F
11/04 20:40, 16F
→
11/04 20:41, , 17F
11/04 20:41, 17F
→
11/04 20:57, , 18F
11/04 20:57, 18F
推
11/04 21:56, , 19F
11/04 21:56, 19F