1

我正在将一个 Linux 应用程序移植到 Windows。我观察到需要在多线程部分进行许多更改。

在 Windows 中,“pthread_t”(在 Linux 中)的等效结构是什么?

在 Windows 中,“pthread_attr_t”(在 Linux 中)的结构等效于什么?

您能否在移植时指导我一些提示。

谢谢...

4

2 回答 2

1

等价于pthread_t将是(通常情况下)HANDLEWindows 上的 a - 这就是CreateThread返回的结果。

没有直接的等价物pthread_attr_t。相反,标志的属性,例如堆栈大小,线程是否最初被挂起以及其他内容CreateThread通过参数传递给。

在我目前看到的案例中,围绕 pthread 编写一个小包装器以便您可以为 Windows 提供替代实现非常简单。最让我恼火的是,在 Windows 上,Mutex 与 Linux 上的不同:在 Windows 上,它是一个可以从多个进程访问的句柄。pthread 库调用 mutex 的东西在 Windows 上称为“临界区”。

话虽如此,如果您发现自己发现的包装代码不止几十行,您可能需要查看 c++11线程库Boost 中的线程支持,以避免重新发明轮子(可能是错误的) )。

于 2013-08-07T07:15:42.017 回答
0

这是您的提示-“pthread 是 POSIX”。

Mingw 有 pthreads,Cygwin 有 pthreads 等等。

我的建议是坚持使用 mingw 并尽量不要做任何更改。

于 2013-08-07T07:07:28.750 回答