2014-02-26 80 views

回答

3

我最近想知道同样的事情,并且我的研究发现了文件modules\core\src\parallel.cpp,其中包含并行for循环的实现,parallel_for_以及相应的数据结构和线程控制函数。

通过这个文件来看,OpenCV的准备支持以下框架,这个位次:

/* IMPORTANT: always use the same order of defines 
    1. HAVE_TBB   - 3rdparty library, should be explicitly enabled 
    2. HAVE_CSTRIPES - 3rdparty library, should be explicitly enabled 
    3. HAVE_OPENMP  - integrated to compiler, should be explicitly enabled 
    4. HAVE_GCD   - system wide, used automatically  (APPLE only) 
    5. HAVE_CONCURRENCY - part of runtime, used automatically (Windows only - MSVS 10, MSVS 11) 
*/ 

只有框架启用(和发现系统上),这是最上面的这个名单上被编译到库中的是;其余的代码被预处理器指令禁用。

总之,你应该只启用你喜欢被OpenCV使用的框架。
如果添加多个,应自动选择上面列表中第一个出现的那个。其他人不会提供额外的好处,但也不应该引起任何麻烦。

线程相关功能的文档可以在Utility and System Functions and Macros部分找到。

希望有帮助!