簡體   English   中英

c++ 並行算法調用期間的安全內存分配(使用英特爾 TBB)?

[英]Safe Memory allocation during a c++ parallel algorithms invocation (with Intel TBB)?

我想了解線程執行的函數內的內存分配對於 C++ 並行算法是否安全。 考慮以下情況:

std::for_each(std::execution::par, first, last, func),

func是函數對象。 在調用func (CPU 和 GPU)期間分配內存。 當太多線程執行並分配內存時,系統會耗盡內存並拋出異常。 到目前為止,這還沒有發生。 我想知道我是否只是幸運,或者執行策略是否考慮了此類內存限制或捕獲了與內存相關的異常? 並行算法是通過英特爾 TBB 實現的。

您可以使用任務代替線程,因為英特爾 oneTBB 處理任務而不是低級線程,也就是說,它創建任務而不是線程,並在運行時將這些任務映射到硬件上。 任務調度器負責將任務映射到線程上。 當我們按照 Jerome Richard 的建議在源代碼中使用 for_each 時,您應該明確釋放內存空間。

暫無
暫無

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

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