2014-02-26 120 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部分找到。

希望有幫助!