fork()
Cでは、FIFO パイプを使用してマルチプロセス アプリケーションを作成し、通信することができます。C++ はマルチスレッド アプリケーションのみをサポートし、マルチプロセス アプリケーションが必要な場合は に依存する必要があることを知りましたfork()
。
しかし、C++ では型チェックが非常に重要であるため、リスクなしでパイプを介してオブジェクトをパイプすることはできません。void*
キャストして要求sizeof
し、パイプを介してすべてを送信して、元のオブジェクトに型キャストすることができます。
では、なぜこれが間違っていると感じるのでしょうか。マルチプロセス アーキテクチャは C++ で使用されていませんか、それともライブラリやより良い方法がありますか。少しググったところ、マルチスレッド C++ またはマルチプロセス C しか見つかりませんでした。
より多くのプロセスが必要な理由は、アプリケーションを可能な限り堅牢にしたいからです。Web サービスがクラッシュした場合、メイン プロセスで再起動する必要があります。あるスレッドが別のスレッドでメモリを破損していないかどうかがわからないため、これをマルチスレッドで行う方法はありません。そのため、1 つのスレッドでエラーが発生した場合は、安全のために再起動する必要があります。