C++98在语言和标准库中都没有支持线程的功能。你需要使用第三方库,你已经列出了一些主要的候选项。
在OpenCV的最新版本中,这些系统被隐藏在parallel_for结构后面。
所有这些都适用于并行处理,即数据并行任务(粗略地说,同时处理输入的每个像素或行)。如果您需要应用程序级别的多线程(例如,有一个主线程和工作线程),则需要使用诸如POSIX线程或Qt等框架。
我推荐使用boost::thread
,它与C++11的std::thread
大多数情况下是兼容的。它是跨平台的,非常成熟。
OpenCV的并行处理是内部的,并不直接与你的代码混合,但它可能会使用比你预期更多的资源和核心(作为一个特性),但这可能会牺牲其他外部进程。