並列に実行するループで入出力を実行できます。 ただし、次の条件があります。
さまざまなスレッドからの出力がインタリーブされても問題とならないこと (プログラム出力は確定的ではありません)。
ループの並列実行の安全性が確実であること。
例: ループ内の入出力文
!$OMP PARALLEL DO PRIVATE(k) do i = 1, 10 ! 並列化されます k = i call show ( k ) end do end subroutine show( j ) write(6,1) j 1 format(’Line number ’, i3, ’.’) end demo% f95 -openmp t13.f demo% setenv PARALLEL 4 demo% a.out |
Line number 9. Line number 4. Line number 5. Line number 6. Line number 1. Line number 2. Line number 3. Line number 7. Line number 8. |
ただし、入出力が再帰的な場合、つまり、入出力文に、入出力を行う関数への呼び出しが含まれている場合は、実行時エラーが発生します。