我将一个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有线程等等。
我的建议是坚持明治,尽量不要做任何改变。