Windows が fork() に最も近いものは何ですか?

Cygwin は Windows で fork() を完全に備えています。したがって、Cygwin の使用が受け入れられる場合、パフォーマンスが問題にならない場合、問題は解決されます。

それ以外の場合は、Cygwin が fork() を実装する方法を見ることができます。かなり古い Cygwin のアーキテクチャ ドキュメントから:

大変な作業のようですね。はい、遅いです。

編集:ドキュメントは古くなっています。更新については、この優れた回答を参照してください


私はそれをやったことがないので、これについての詳細は確かにわかりませんが、ネイティブの NT API にはプロセスをフォークする機能があります (Windows の POSIX サブシステムにはこの機能が必要です - POSIX サブシステムがもサポートされなくなりました)。

ZwCreateProcess() を検索すると、さらに詳細が得られるはずです。たとえば、Maxim Shatskih からの次の情報が参考になります。

Corinna Vinschen は Cygwin が ZwCreateProcess() を使用してもまだ信頼できないことを発見したことを示していることに注意してください:


まあ、Windows にはこれほど似たものはありません。特に、*nix でスレッドまたはプロセスを概念的に作成するために fork を使用できるためです。

だから、私は言わなければならないでしょう:

CreateProcess() /CreateProcessEx()

そして

CreateThread() (C アプリケーションの場合、_beginthreadex() と聞いたことがあります) の方が良いです)。