为什么英特尔线程构建模块 (TBB)parallel_for
的开销如此之大?根据第 3.2.2 节Automatic ChunkingTutorial.pdf
大约半毫秒。这是教程中的一个尝试:
注意:通常一个循环需要至少一百万个时钟周期才能使 parallel_for 提高其性能。例如,在 2 GHz 处理器上花费至少 500 微秒的循环可能会受益于 parallel_for。
从我目前所读到的内容来看,TBB 在内部使用线程池(工作线程池)模式,它通过最初只产生工作线程一次(花费数百微秒)来防止这种糟糕的开销。
那么什么是花时间呢?使用互斥锁的数据同步不是那么慢吗?此外,TBB 不使用无锁数据结构进行同步吗?