0

マルチスレッド プログラムで動的なチャンク管理システムを作成しようとして、非常に苦労しているようです。ボクセル チャンクで満たされた次元である VDimensia クラスがあり、マルチスレッド プログラムの 1 つのスレッドがビジー状態でボクセルのレンダリングと更新を行っています。私の問題は、別のスレッドが遠すぎるボクセル チャンクを破棄するように設計されており、別のスレッドがチャンクの作成と初期化の最中にチャンクを削除すると問題が発生することです。現在、私のコードは少し乱雑です。すべてのアクセス チェックが行われていますが、何らかのアクセス違反でプログラムがポップアップしないようにする方法を見つけることができないようです。try catch を使用して違反を無視して続行する方法はありますか? 私はすでに __try __except を使用しようとしましたが、スレッドをロックすることにしました。コンパイラ オプション /EHa を設定しようとしましたが、文字通り何もしません。Visual Studio 2012 C++ を使用しています。私は今でも C++ を学んでいます。

4

1 に答える 1

0

std::shared_ptr/std::weak_ptr などの ref カウント ソリューションを調べて、ボクセルを更新しているスレッドに任せることができます。それらが完了してボクセルを逆参照すると、ボクセルは消える可能性があります。

http://en.cppreference.com/w/cpp/memory/shared_ptr

于 2013-05-27T04:28:02.303 に答える