2012-04-25 20 views
2

私はいくつかのスレッドをboost :: threadで作成しました。これは、自分のゲームプロジェクト用の複数のゲームサーバーを起動して制御するマネージャーであるためです。スレッドをカプセル化する方法は?

マネージャーは、1つのアプリケーションで構成され、私の質問は以下の通りです:それはNULLポインタ例外中に例えばクラッシュした場合や、類似したスレッド自体が終了したことを、このようスレッドをカプセル化する方法

ではなく、その後、プログラム全体がクラッシュします。

+0

最初に未処理の例外を許可するのはなぜですか? – FailedDev

+0

私はそれを許可したくありませんが、大きなプロジェクトでは、複数のデータベース接続を持つゲームサーバーとして、インスタンスと外部ファイルの誤解が起こる可能性があります。また、私がアップデートで誤った記述をしてテスト期間などにそれを見逃してしまった場合、すべてのサーバが一気にクラッシュするわけではありません。 – user1356103

+0

あなたの質問は本当にです: "私がコードを書いていない場合に、sanelyが処理するコードを書くことができますか?"それが問題だと分かったら、その答えははっきりと分かります。 –

答えて

2

まず、コード内でヌル・ポインタ例外が発生しないことを絶対に確認する必要があります。これは必須の要件です。

アプリケーションを複数の通信プロセスに分割する方法はありますか?その方法の1つがクラッシュした場合、残りの部分は影響を受けません。

+0

完全に同意します。私たちは、プログラムがマルチスレッド化されているか正しく動作していなければならないという前提で、常に始めるべきです。私は最近、「物事を続ける」ことを目的とした図書館のこの「キャッチ(...)」をあまりにも多く見てきました –

+0

私はそれを起こさせようとはしていませんが、大きなプロジェクトになるでしょう。おそらく起こるでしょう。 その場合、私はそれを見つけて修正します。 最初に他の回答を待つことにします。 1つのアプリケーション内でそれを実現する方法がある場合。そうでない場合、私はあなたの助言に従うことと、複数のプロセスを作成するというチャンスはありません。 – user1356103

+0

これはスレッドが行うことではありません。スレッドはほとんどすべてを共有します。 1つのスレッドがamuckを実行する場合、プロセスコンテキストはトーストです。スレッドは完全に協力し、完全に信頼している必要があります。 –

関連する問題