std::thread, posix线程和win32线程在MinGW-W64

std::thread, posix threads, and win32 threads in MinGW-W64

本文关键字:线程 win32 MinGW-W64 posix thread std      更新时间:2023-10-16

我正在使用MinGW_W64,我在决定如何使用"threading"选项时遇到了麻烦。我可以使用posix线程或win32线程。到目前为止,我一直在使用c++ 11的"std::thread"来处理线程(它需要posix threads选项),我真的很喜欢这样做的接口。然而,我从多个来源读到posix线程明显比win32线程慢,性能对我来说是一个大问题。

我的项目最终将是多平台的,但目前我的主要开发机器是运行Windows 7。

我的问题是:MinGW_W64的posix线程比win32线程慢吗?如果是这样,我该如何编写一个包装器,让我使用类似std::thread的接口,但在底层使用win32线程(或者如果有人已经编写了这样的包装器)?

已经有一个轻量级的本地实现std::thread和同步原语的MinGW,在纯WINAPI中实现:https://github.com/meganz/mingw-std-threads

它是一个头文件库,应该与具有适当c++ 11支持的任何版本的MinGW一起工作。