multithreadingLinux与Windows

我将一个Linux应用程序移植到Windows。 我发现在multithreading部分需要做很多的改变。

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

在windows下,“pthread_attr_t”(在Linux中)的结构是什么?

你可以在移植的时候引导我一些技巧。

谢谢…

相当于pthread_t将是(正HANDLE )Windows上的一个HANDLE – 这是CreateThread返回的。

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

在目前为止我看到的情况下,围绕pthreads写一个小的包装,这样你就可以有一个替代的Windows实现是非常简单的。 对我来说最令人不快的是,在Windows上,Mutex与Linux上不一样:在Windows上,它是一个可以从多个进程访问的句柄。 pthread库调用互斥体的东西在Windows上被称为“临界区”。

这就是说,如果你发现自己找到的不仅仅是几十行的包装代码,你可能需要看看c ++ 11 线程库或Boost中的线程支持,以避免重新发明轮子(也可能是错误的)。

这里是你的提示 – “pthread是POSIX”。

明伟有线程,Cygwin有线程等等。

我的建议是坚持明治,尽量不要做任何改变。