17

私はマルチスレッドを検討していますが、GCD は、 and を使用して手動でソリューションを作成するよりもはるかに優れたオプションのようです。しかし、ほとんどの新しい POSIX 互換システムに取り組んでいるか、間もなく取り組むように見えますが、Windows についてはどうですか? Windows に移植される可能性はどのくらいですか? それを妨げている障壁は何ですか?pthread.hpthreads-win32libdispatchlibdispatch

結局のところ、そのポーテージを実行するにはどうすればよいでしょうか?

編集:議論を始めるために、私がすでに知っているいくつかのこと:

  • Windows でコンパイルできるブロック互換のコンパイラが必要ですよね?PLBlocks はそれを処理しますか?
  • LLVMブロックのランタイムを使用できますか?
  • pthread.h移植性のために、ユーザー空間のすべての依存関係libdispatchを APR 呼び出しに置き換えることはできませんか? または、代わりに…を使用しpthreads-win32てください…</li>

編集 1: Windows では利用できない にlibdispatch(何らかの形で) 依存しているため、これは完全に完全に不可能であると聞いています... これが本当かどうか知っている人はいますか?kqueue

4

5 に答える 5

8

https://github.com/DrPizza/libdispatch

于 2011-06-24T08:22:34.137 に答える
5

Windows で libdispatch に相当するものは、私の基本的な理解では、アンマネージ コードのコンカレンシーランタイムと、マネージ コードの並列拡張として総称されるテクノロジのコレクションです。どちらも同様の方法で作業単位 (または「タスク」) を抽象化するため、GCD はこれらの両方にかなりよく対応しているように見えます。

于 2010-05-02T11:14:56.807 に答える
1

少し調べてみると、移植にはすでにかなりの関心が寄せられているようですが、その移植はかなり抜本的な作業であり、最終的には API の別の実装に過ぎず、実際には元のコードと重要なコードを共有していない可能性があります。 libdispatch。libdispatch を POSIX ではなく Apache Portable Runtime に基づいたものに移植して、Windows へのクロスプラットフォーム化を容易にするという提案をいくつか見ましたが、これも簡単な変更ではありません。

おそらく、これは決して小さな仕事ではないでしょう。

于 2010-05-02T03:00:54.807 に答える
1

libdispatch-on-pthreads と pthreads-on-Win32、または libdispatch-on-APR と APR-on-Win32 ではなく、libdispatch を Win32スレッド プール APIに直接実装する方がよいのではないかと思います。幸いなことに、この 2 つの API は十分に似ているため、おそらく自分で移植することができます。悪いニュースは、正確な動作を達成するのを困難にする小さなセマンティックの不一致があるコーナー ケースがおそらくたくさんあるということです。

于 2010-05-02T03:40:54.670 に答える