私は、各リクエストとパラメーターがcsvファイルに記録されるシステムで作業しました。
ファイルへの書き込み中にlock
、同期に を使用していました。
node.js で同期はどのように機能しますか?
要求をファイルに記録したい場合、たとえば時間ベースの csv ファイルをロックする必要がありますか?
私は、各リクエストとパラメーターがcsvファイルに記録されるシステムで作業しました。
ファイルへの書き込み中にlock
、同期に を使用していました。
node.js で同期はどのように機能しますか?
要求をファイルに記録したい場合、たとえば時間ベースの csv ファイルをロックする必要がありますか?
では、node.js のソース コードを読んでみました。のようなものを使用するとfs.appendFile
、最終的にここに着陸します (C++ の場合):
if (cb->IsFunction()) {
ASYNC_CALL(write, cb, fd, buf, len, pos)
return;
}
https://github.com/joyent/node/blob/master/src/node_file.cc#L681
write
は昔ながらの POSIC 書き込みであり、( とは対照的に) アトミックであることが保証されていませpwrite
ん。appendFile
ひどいことは何も起こりませんが、前の通話が完了する前に再度電話をかけると、回線が混乱する可能性があります。
順次 POSIX 書き込みを行うを使用する必要がfs.createWriteStream
あります (データがまだ書き込まれていない内部バッファーを保持します)。これにより、データがストリームに書き込んだ順序で正確に書き込まれることが保証されます。