许多第三方的C/C++库提供了多线程支持、线程优先级和对应的调度器等功能。为什么现代C++标准没有支持这个实用的特性呢?
标准中没有指定此功能,这意味着按照C++标准描述的方式,“线程”没有优先级。
pthread_setschedparam
SetThreadPriority
为您的程序编写一个简单的包装类非常容易(如果使用其他平台,则可能需要其他调用)。
(通过使用std::thread::native_handle
检索本机线程句柄来执行此操作)
Boost.Thread在此处提供了以下说明
以这种方式启动的线程是使用实现定义的线程属性创建的,例如堆栈大小、调度、优先级或任何特定于平台的属性。如何提供可移植接口以允许用户设置平台特定属性并不明显。 Boost.Thread 通过 thread::attributes 类保持中间路线,允许以至少一种可移植的方式设置堆栈大小,如下所示[...]
native_handle()
,用于访问本地线程API中可用的任何功能。 - Mike Seymour