Skip to main content

IAR Embedded Workbench for Arm 9.70.x

DLIBランタイム環境でのマルチスレッドのサポート

このセクションの内容:

DLIBランタイム環境は、2種類のロック(システムロックファイルストリームロック)を使用します。ファイルストリームロックは、ファイルストリームの状態が更新されたときにガードとして使用され、フルライブラリ設定でのみ必要になります。以下のオブジェクトは、システムロックによってガードされます。

  • ヒープ(つまりmallocnewfreedeleterealloccallocが使用される場合)。

  • Cファイルシステム(フルライブラリ設定でのみ使用可能)。ただし、ファイルストリーム自体を除きます。ストリームが開かれたり閉じられたときにファイルシステムが更新されます。つまり、fopenfclosefdopenfflushfreopenが使用されるときです。

  • シグナルシステム(つまりsignalが使用されるとき)。

  • 一時ファイルシステム(つまりtmpnamが使用されるとき)。

  • C++静的記憶寿命を持ち、動的に初期化される関数ローカルオブジェクト。

  • C++ロケール ファセットのハンドリング

  • C++標準式のハンドリング

  • C++停止および予期しない事象のハンドリング

以下のライブラリオブジェクトはTLSを使用します。

TLSを使用するライブラリオブジェクト

以下の関数が使用される場合

エラー関数

errno, strerror

C++例外エンジン

適用されません。

表74 TLSを使用するライブラリオブジェクト 


注記

printf/scanf(または任意の派生型)をフォーマッタとともに使用する場合、個々のフォーマッタは保護されますが、完全なprintf/scanfの呼び出しは保護されません。

マルチスレッドをサポートするランタイム環境でC++が使用される場合、コンパイラオプション--guard_callsを使用して、動的イニシャライザを持つ関数-静的変数が、複数のスレッドによって同時に初期化されないようにします。