多线程Linux与Windows

时间:2013-08-07 06:56:43

标签: linux windows multithreading porting

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

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

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

您可以在移植时向我提供一些提示。

...谢谢

2 个答案:

答案 0 :(得分:1)

等同于pthread_t的情况(通常就是这种情况)在Windows上为HANDLE - 这是CreateThread返回的内容。

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

在我到目前为止看到的情况下,在pthreads周围编写一个小包装器,以便为Windows提供替代实现,这非常简单。对我来说最令人恼火的是,在Windows上,Mutex与Linux上的不一样:在Windows上,它是一个可以从多个进程访问的句柄。 pthread库称为互斥锁的东西称为"临界区"在Windows上。

话虽如此,如果您发现自己找到的不仅仅是几十行包装代码,您可能需要查看c ++ 11 thread librarythread support in Boost以避免重新发明轮子(可能是错误的)。

答案 1 :(得分:0)

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

Mingw有pthreads, Cygwin有pthreads等等。

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