What will happen if fwrite
& fclose
are called in parallel from two threads for the same file descriptor?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
fwrite
and fclose
operate on the FILE
data structure. Since this is a largish data structure that does store more than just the file descriptor, the answer is bad things.
Don't do this unless you ensure atomic operation using mutexes.
回答2:
POSIX requires FILE
access to be thread-safe, but since fclose
closes the file and invalidates the pointer, there is no way (i.e. it's not just a specification issue but a fundamental API issue that could never be "fixed" or made to go away) to use fclose
when another thread might be accessing the FILE
still. You'll need to do your own locking.
回答3:
For such a circumstance you need to define priorities of your methods. You can control the methods with "synchronized".