为什么Intel Threading Building Blocks (TBB)的parallel_for有如此大的开销?根据Tutorial.pdf中3.2.2节的《自动分块》,它大约需要半毫秒。以下是教程中的一段引用:
“注意:通常一个循环至少需要花费100万个时钟周期,才能使parallel_for提高性能。例如,在2 GHz处理器上,需要至少500微秒的循环才能从parallel_for中受益。”
据我所了解,TBB在内部使用线程池(工作线程池)模式,并通过仅在最初生成工作线程时(这需要数百微秒)来防止此类糟糕的开销。
那么时间去哪里了?使用互斥锁进行数据同步不会很慢吧?此外,TBB是否使用无锁数据结构进行同步?
“注意:通常一个循环至少需要花费100万个时钟周期,才能使parallel_for提高性能。例如,在2 GHz处理器上,需要至少500微秒的循环才能从parallel_for中受益。”
据我所了解,TBB在内部使用线程池(工作线程池)模式,并通过仅在最初生成工作线程时(这需要数百微秒)来防止此类糟糕的开销。
那么时间去哪里了?使用互斥锁进行数据同步不会很慢吧?此外,TBB是否使用无锁数据结构进行同步?