我正在将一个 Linux 应用程序移植到 Windows。我观察到需要在多线程部分进行许多更改。
在 Windows 中,“pthread_t”(在 Linux 中)的等效结构是什么?
在 Windows 中,“pthread_attr_t”(在 Linux 中)的结构等效于什么?
您能否在移植时指导我一些提示。
谢谢...
我正在将一个 Linux 应用程序移植到 Windows。我观察到需要在多线程部分进行许多更改。
在 Windows 中,“pthread_t”(在 Linux 中)的等效结构是什么?
在 Windows 中,“pthread_attr_t”(在 Linux 中)的结构等效于什么?
您能否在移植时指导我一些提示。
谢谢...
等价于pthread_t
将是(通常情况下)HANDLE
Windows 上的 a - 这就是CreateThread
返回的结果。
没有直接的等价物pthread_attr_t
。相反,标志的属性,例如堆栈大小,线程是否最初被挂起以及其他内容CreateThread
通过参数传递给。
在我目前看到的案例中,围绕 pthread 编写一个小包装器以便您可以为 Windows 提供替代实现非常简单。最让我恼火的是,在 Windows 上,Mutex 与 Linux 上的不同:在 Windows 上,它是一个可以从多个进程访问的句柄。pthread 库调用 mutex 的东西在 Windows 上称为“临界区”。
话虽如此,如果您发现自己发现的包装代码不止几十行,您可能需要查看 c++11线程库或Boost 中的线程支持,以避免重新发明轮子(可能是错误的) )。
这是您的提示-“pthread 是 POSIX”。
Mingw 有 pthreads,Cygwin 有 pthreads 等等。
我的建议是坚持使用 mingw 并尽量不要做任何更改。