簡體   English   中英

我應該使用 static 工作池還是動態工作池(線程)?

[英]Should I use static work pool or dynamic work pool (of threads)?

我正在運行一個運行良好的 pthreads 程序,但是我沒有看到我期望的加速。 我懷疑我花了很多時間來創建和銷毀我的線程。

我運行的線程永遠不會超過我擁有的 cpus。

在 20 分鍾內,我創建了大約 5000 個線程。

我的問題是是否值得實施適當的 static 工作池,這樣我只會分配 static 數量的工人?

首先,您應該衡量您的應用程序將所有時間都花在了哪里。 這意味着每秒大約創建 4 或 5 個線程,這很多,但可能不是您花費所有時間的地方。

但是,如果您總是將自己限制為 N 個線程,其中 N 是 CPU 的數量,您可能應該只預先創建 N 個線程,並使用一些有意義的算法安排工作在每個線程上運行你正在做的計算。

暫無
暫無

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

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