インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、Linux* および macOS* にのみ適用されます。
ユーザーのプログラムは、OPEN 文の ACTION (または READONLY) 指示子によって指定された値に従って、レコードの読み取り、書き込み、または読み取りと書き込みの両方を行うために、ファイルを開きます。これにより、そのプログラム自体が指定されたタイプの文を実行することがチェックされます。
ファイルロックのメカニズムは、特定のファイルをほかのプロセスがアクセスしているときに、他のユーザーによるファイルへのアクセスを許可または制限します。
インテル® Fortran のファイルロック機能では 3 種類のアクセスモードを提供しています。
暗黙的共有モードでは、アクセスモードは何も指定されません。これは、「ロックなし」とも呼ばれます。
明示的共有モードでは、競合するすべてのプロセスがファイルにアクセスできます。このモードは、SHARED 指定子または SHARE='DENYNONE' を OPEN 文に設定します。
排他モードでは、1 つのプロセスだけがファイルにアクセスできます。このモードは、NOSHARED 指定子または SHARE='DENYRW' により OPEN 文に設定します。
ファイルロックのメカニズムは、OPEN 文中で対応する指定子の明示的な設定を探します。それ以外の場合、Fortran ランタイムは、いかなる設定やファイルロックのチェックも行わないため、プロセスはほかのプロセスが開いたりロックしているファイルであっても、関係なくそのファイルにアクセスできます。
プロセス 1 が、指定子なし (結果としてロックしない) でファイルを開きます。
プロセス 2 が、ファイルを開こうとします。
この場合、使用されるモードに関係なくファイルにアクセスできます。
プロセス 1 が、明示的共有モードでファイルを開きます。
プロセス 2 が、ファイルを開こうとします。
プロセス 2 が明示的共有モードまたは暗黙的共有モード (ロックなし) でファイルを開く場合、ファイルにアクセスできます。
プロセス 2 が排他モードでファイルを開こうとする場合は、エラーとなります。
プロセス 1 が排他モードでファイルを開きます。
プロセス 2 が、ファイルを開こうとします。
プロセス 2 が暗黙的共有モード (ロックなし) でファイルを開く場合、ファイルにアクセスできます。
プロセス 2 が明示的共有モードまたは排他モードでファイルを開こうとする場合は、エラーとなります。
Fortran ランタイムは、アクセスが競合する際のファイルエントリーの更新を調整しません。この場合、ユーザーが競合するプロセス間でアクセス時間を調整して、同じレコード位置で WRITE 文と REWRITE 文が同時に発生する可能性に対処する必要があります。