C++ tbb:任务调度程序初始化自定义分配器?
所以我试着对每一个都使用parallel。。 我有代码,我做:C++ tbb:任务调度程序初始化自定义分配器?,c++,multithreading,parallel-processing,intel,tbb,C++,Multithreading,Parallel Processing,Intel,Tbb,所以我试着对每一个都使用parallel。。 我有代码,我做: Source s;.. parallel_for_each(begin(_allocs), end(_allocs), [&s] (Allocs_t::value_type allocation) { // cool stuff with allocation } 这很有效,而且效果很好。然而,我在许多帖子中看到,在调度任务之前,我应该调用tbb:task\u scheduler\u init 问题是我重写了mallo
Source s;..
parallel_for_each(begin(_allocs), end(_allocs), [&s] (Allocs_t::value_type allocation) {
// cool stuff with allocation
}
这很有效,而且效果很好。然而,我在许多帖子中看到,在调度任务之前,我应该调用tbb:task\u scheduler\u init
问题是我重写了malloc和calloc,并且我不能使用init调用malloc和calloc(它是这样做的…)
因此,问题是:
感谢实例化
tbb:task\u scheduler\u init
对象是可选的。TBB具有延迟自动初始化机制,它在第一次调用TBB算法/调度程序时构造所有内容。自动初始化相当于在第一次调用TBB之前构造一个全局任务调度程序初始化对象
当然,如果需要覆盖默认的线程数,指定TBB应该初始化的范围,或者指定工作线程的堆栈大小,那么显式初始化是不可避免的
TBB调度程序使用它自己的可伸缩分配器(tbbmalloc.dll,libtbbmalloc.so..),如果在TBB二进制文件附近找到,或者在其他情况下使用malloc。无法显式指定调度器要使用的任何其他分配器(与具有相应模板参数的TBB容器不同)
综上所述,我认为您有两个[可组合]选项:
tbb:task\u scheduler\u init
对象的实例化是可选的。TBB具有延迟自动初始化机制,它在第一次调用TBB算法/调度程序时构造所有内容。自动初始化相当于在第一次调用TBB之前构造一个全局任务调度程序初始化对象
当然,如果需要覆盖默认的线程数,指定TBB应该初始化的范围,或者指定工作线程的堆栈大小,那么显式初始化是不可避免的
TBB调度程序使用它自己的可伸缩分配器(tbbmalloc.dll,libtbbmalloc.so..),如果在TBB二进制文件附近找到,或者在其他情况下使用malloc。无法显式指定调度器要使用的任何其他分配器(与具有相应模板参数的TBB容器不同)
综上所述,我认为您有两个[可组合]选项: