同じディレクトリにあるファイルでのみ機能します。

同じディレクトリにあるファイルでのみ機能します。

Linuxでは、openatシステムコールを使用してファイルを生成し、ファイルが存在するかどうかをテストできます。 C / C ++メモリモデルに関する限り、ファイルを生成してその存在を確認すると、同期関係が生成されます。私が知る必要があるのは、これらの同期がすべて順次一貫しているかどうかです。 (確かにそうしたいのですが、実際にこの内容がどこでも文書化されているのを見たことはありません。)

たとえば、プロセスp1とp2、パスAとBがあるとします。

p1が次のことを行う場合:生成(A)を作成してから生成(B)

p2 は次のことを行います。開こうとした後(B)、開こうとします(A)。

そして、AやBを妨げる他のプロセスがない場合、p2がBを正常に開いたが、Aが見つからない可能性はありますか?

むしろ、すべてのタスクがファイルシステム内にあると仮定できます。

ベストアンサー1

すべての基本ディスクとマルチコアCPU最適化では、2つのプロセス間の作業順序の厳密な順序を決定することはできません。これが時間依存動作の可能性がある場合、セマフォを使用する理由です。

おすすめ記事