diff options
-rw-r--r-- | file.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -3499,15 +3499,18 @@ rb_thread_flock(void *data) * * Example: * - * # write lock + * # update a counter using write lock * # don't use "w" because it truncates the file before lock. - * File.open("testfile", File::WRONLY|File::CREAT, 0644) {|f| + * File.open("counter", File::RDWR|File::CREAT, 0644) {|f| * f.flock(File::LOCK_EX) - * f.truncate(0) - * f.write "new content" + * value = f.read.to_i + 1 + * f.rewind + * f.write("#{value}\n") + * f.flush + * f.truncate(f.pos) * } * - * # read lock + * # read the counter using read lock * File.open("testfile", "r") {|f| * f.flock(File::LOCK_SH) * p f.read |