8

アプリケーションを Linux から Windows に移植しています。私は、プラットフォーム間でアプリケーションを移植するという芸術にかなり慣れていません。私の知る限り、Windows は POSIX スレッドの実装をネイティブにサポートしていません。これは本当ですか?Windows 用の pthread の実装 (ラッパーなど) について聞いたことがありますが、それらを使用するか、Windows が提供する CreateMutex やその他の API を使用する方がよいでしょうか???? 誰かお願いします。両方の世界の長所と短所を教えてください。移植に関するいくつかのその他のヒントは、答えとうまく調和します。

前もって感謝します。

4

6 に答える 6

7

すべて同じものになります (pthreads は EnterCriticalSection などを呼び出すだけです)。したがって、pthreads ラッパーを持っている場合は、おそらくそれを使用して、それほど多くのコードを変更する必要がないようにする必要があります。

于 2009-07-10T16:05:47.120 に答える
5

これはうまく機能します:http ://sourceware.org/pthreads-win32/

これは、Windows用のpthreadsライブラリのポートです。

于 2009-07-15T02:23:46.377 に答える
3

覚えておく必要があることの 1 つは、このコードの将来についてです。将来的に両方のプラットフォームで開発 (およびリリース) する予定はありますか? それとも、これは一方通行の港ですか?

プロジェクトを移植するときの最善の方法は、コードへの実際の変更を最小限に抑えることです。あなたの場合、これは pthread ソリューションを使用することを意味します。そうは言っても、これを一方通行のポートにすることを計画しているのであれば、ネイティブに移行しても問題はありません。:)

両方の戦略を十分に検討してから、最も快適に感じる方を実装するのに時間がかかります.

于 2009-07-10T16:04:26.327 に答える
1

私が最初にすることは、Windows ではなく Linux で Boost Thread に移植することです。

于 2009-07-10T16:15:20.003 に答える
0

pthreads と Window の API の両方をラップし、適切なものを内部で使用するライブラリを使用して、両方の長所を活用してみませんか? コードは両方のプラットフォームで同じままです。

C ++にはそのようなライブラリが不足していないため、Cバージョンがないことは想像できません。

于 2009-07-10T16:08:20.327 に答える
0

CRT を使用する Windows C/C++ アプリケーションでは、beginthread/beginthreadexを呼び出して、新しいスレッドで CRT を適切に初期化する必要があります。

于 2009-07-10T16:10:37.517 に答える