read
(またはwrite
、またはその両方)を同じファイル記述子の2つの異なるスレッドで呼び出すとどうなりますか?ソケットファイルディスクリプタ)、明示的に同期メカニズムを使用しないでください。Cの読み取りとスレッドの安全性(Linux)
読み取りと書き込みはsyscallなので、単一のコアCPUでは、2つの読み取りが「同時に」実行されるのはおそらく不幸です。しかし、複数のコアを使用すると...
Linuxカーネルは何をしますか?
もう少し一般的です:他のカーネル(BSDなど)の動作は常に同じですか?
編集:close documentationによると、ファイルディスクリプタが他のスレッドのシステムコールで使用されていないことを確認する必要があります。したがって、ファイルディスクリプタを閉じる前に明示的な同期が必要であることを縫い合わせています(それを呼び出すスレッドがまだ実行中の場合は読み取り/書き込みが行われます)。
同期メカニズムを使用することはできません。カーネルはすでにあなたのためにそれをしています。 –
私は、明示的に使っています。だから、カーネルは自分自身で全仕事をしているし、両方の読み書き/呼び出しは明示的な同期を必要としない? –
私が知る限り、はい。私は実際にはLinuxカーネルの専門家ではありませんが、そうでないとは想像できません。たぶん、より具体的な知識を持つ人が来るでしょう。 –