「-pthread」を使用しているにもかかわらず、C マルチスレッド プログラムで「操作が許可されていません」エラーがスローされるのはなぜですか?

Linda Hamilton
リリース: 2024-10-30 23:02:30
オリジナル
733 人が閲覧しました

Why Does My C   Multithreaded Program Throw an

g を使用したマルチスレッド コードのコンパイル : ランタイム エラーのトラブルシューティング

問題:

推奨される '-pthread' フラグを使用しているにもかかわらずの場合、 g を使用してマルチスレッド C プログラムをコンパイルして実行しようとすると、ランタイム エラーが発生します。 'std::thread' オブジェクトを使用しようとすると、エラー メッセージは「操作は許可されていません」と表示されます。

考えられる解決策:

この問題は、 g コンパイラのバグ。これを解決するには、次の回避策を適用します。

コンパイル コマンドに「-Wl,--no-as-needed」フラグを追加します。このフラグは、プログラムに必要なシンボル 'pthreads' を考慮しないようにリンカーに指示します。

改訂されたコンパイル コマンド:

g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed
ログイン後にコピー

この回避策により、次のことが可能になります。マルチスレッド コードを正常にコンパイルして実行します。

注:

この問題は公式の g バグ トラッカーで報告されており、将来修正される予定です。ただし、ここで提供されている回避策により、現時点では問題は解決されるはずです。

以上が「-pthread」を使用しているにもかかわらず、C マルチスレッド プログラムで「操作が許可されていません」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!