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