哪个更适合Windows? pthreads还是CreateMutex?

时间:2009-07-10 15:52:16

标签: c windows linux posix pthreads

我将我的应用程序从Linux移植到Windows。我对跨平台移植应用程序的精湛技术相当陌生。据我所知,Windows本身不支持POSIX线程实现。这是真的?我听说过一些针对windows(包装器或其他东西)的pthreads实现,最好是使用它们还是使用CreateMutex和windows提供的其他API?有人请。用两个世界的PRO和CON启发我。移植的一些其他技巧可以很好地与答案一起使用。

提前致谢。

6 个答案:

答案 0 :(得分:7)

这一切都是相同的东西(pthreads只是调用EnterCriticalSection等),所以如果你有一个pthreads包装器,你应该使用它,这样你就不必更改代码< / p>

答案 1 :(得分:5)

这很有效:http://sourceware.org/pthreads-win32/

它是Windows的pthreads库的一个端口。

答案 2 :(得分:3)

您需要记住的一件事是这段代码的未来是什么。您是否计划将来在这两个平台上开发(和发布)?或者这是一个单向端口?

移植项目时最好的做法是尽可能减少对代码的实际更改。在您的情况下,这将意味着采用pthread解决方案。话虽这么说,如果你计划这是一个单向端口,那么本地人永远不会伤害。 :)

我需要一些时间来全面检查这两个项目,然后实施你觉得最舒服的项目。

答案 3 :(得分:1)

我要做的第一件事是在Linux下移植到Boost Thread而不是Windows。

答案 4 :(得分:0)

为什么不充分利用这两个世界并使用包含pthread和Window API的库并在封面下使用适当的API?您的代码在两个平台上保持不变。

C ++中不乏这样的库,所以我无法想象没有C版本。

答案 5 :(得分:0)

在使用CRT的Windows C / C ++应用程序上,需要调用beginthread/beginthreadex来正确初始化新线程中的CRT。