簡體   English   中英

C ++ TBB parallel_bounded_queue-彈出超時

[英]C++ TBB concurrent_bounded_queue - pop timeout

我注意到TBB concurrent_bounded_queue阻塞彈出沒有超時。 我們正在從另一個我們有時間等待的實現轉向TBB,因此在這里尋找相同的功能。

在任何情況下,定時等待通常都很有用,任何建議都將受到贊賞。

謝謝

根據 TBB架構師Arch Robinson的說法 ,超時從來都不是優先事項:

TBB的初始設計針對並行加速的基於任務的編程范例。 我認為這是“經典”並行算法,例如parallel_for,parallel_reduce等。 也就是說,為了避免比賽條件。預計阻塞會很短,否則程序將無法擴展。 因此超時不是優先事項。

有一篇舊文章 ,其中一位TBB工程師討論了定時的互斥體。 您可能將無法直接使用此處描述的解決方法,但是它可以幫助您自己實現阻塞出隊,將其基於concurrent_queue try_pop不會阻塞try_pop

我不希望性能達到僅使用TBB隊列的水平,而且也不會那么微不足道(大約100+ LOC),但是如果您真的想要,可以做到。

PS Java BlockingQueue樣式的帶有超時的阻止輪詢/出價是您可能不希望在快速路徑上使用的東西。 有幾次我已經開始使用這種方法來實現,只是在一段時間后(沒有雙關語)發現,生產者/消費者的壓力不夠,而阻塞至少是同樣有效的,或者我需要調查發生了什么並重新考慮我的代碼的某些部分。

暫無
暫無

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

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