現在、arm および ppc アーキテクチャに展開されるマルチスレッド アプリケーションに取り組んでいます。アームの pthread_cancel に問題があります。
arm の pthread_cancel は、ppc と同じように動作しません。スレッドはキャンセルされますが、スレッドのローカル変数のデストラクタがアームで呼び出されていません。また、pthread_cleanup_push を介してインストールされたキャンセル クリーンアップ ハンドラ ルーチンを明示的に定義しようとしました。しかし、スレッドがキャンセルされたときに呼び出されていません。
コードは ppc で正常に動作します。スレッドがキャンセルされると、ローカル変数のデストラクタが呼び出されます。また、クリーンアップ ハンドラーを明示的に定義すると、pthread_cancel が呼び出されたときに呼び出されて実行されました。
何か不足していますか?おそらくいくつかのコンパイラオプション?
- プログラミング言語: C++
- コンパイラ: arm-linux-g++/powerpc-linux-g++
- OS: リナックス
編集:
私は、このlibc bugに記録された、一種の同様の問題を発見しました。
g++ の代わりに gcc を使用し、 -fno-exception コンパイラ オプションを追加するとうまくいきました。しかし、私は本当にこの問題の背後にあるものを理解したいと思っています. さらに、-fno-exception は、アプリケーションで例外処理を実行できないことを意味します。現在使用しているわけではありませんが、将来使用する可能性があります。
ありがとう。