0

ブロックされてはならないスレッドを使用して、異なるオフセット位置でファイルに書き込もうとしています。同じことをどのように進めればよいかよくわかりません。O_NONBLOCK フラグを付けてファイルを開く必要があると推測しています。

O_NONBLOCK フラグを付けてファイルを開く必要があるだけで、書き込みプロセスは同じですか?

サンプルコードは説明として役立ちます

ありがとう

4

1 に答える 1

1

UNIX/Linux では、ファイルに関連付けられたファイル記述子は常に読み取りと書き込みの準備ができています。つまり、O_NONBLOCK通常のファイルには影響しません。

通常、ファイルへの書き込みは、データをカーネル ページ キャッシュにコピーして返すだけです。ファイルがO_DIRECTflag で開かれた場合、またはカーネル ページ キャッシュにダーティ ページが多すぎる場合 (書き込みがブロックされる場合) を除きます。

ファイルへの非ブロッキング書き込みを行う必要がある場合は、すべての書き込みを行う専用スレッドを作成するか、非同期 I/O を使用します。

于 2012-07-04T08:26:23.540 に答える