複数のスレッド間で共有される記憶域
以下のいずれかが真の場合、2 つ以上のスレッドが同じ記憶域に
アクセスできます。
- 変数が STATIC(*ALLTHREAD) キーワードで定義されている場合
- EXPORT/IMPORT キーワードがスレッド逐次化モジュールの定義仕様書で使用されている場合
- データがポインターに基づいており、そのポインターが複数のモジュールで使用でき る状態の場合
- ファイルが SHARE(*YES) で作成またはオーバーライドされている場合。この場合、 共用記憶域を表すフィードバック領域です。RPG はファイル操作中に常にフィードバック領域を 参照するため、そのファイル自身へのアクセスを同期化する必要があります。
複数のモジュール間で共用される記憶域のスレッド・セーフティーの取り扱いは、プログラマーに任されています。
これは、アプリケーション内にロジックを追加して
記憶域へのアクセスを同期化することによって行います。
この共用記憶域へのアクセスを同期化するためには、
次のいずれか、または両方を行います。
- 共用資源が複数のスレッドから同時にアクセスされないようにアプリケーションを 構成する
- 別個のスレッドから資源に同時にアクセスしようとする場合は、セマフォーまたは mutex といった機能を使用してアクセスを同期化する。詳細については、スレッド関連の API の使用を参照してください。