【发布时间】:2011-04-10 02:10:46
【问题描述】:
如果我在不同的线程中打开同一个文件(.txt 文件)几次,返回的文件描述符会不同。如果我尝试使用文件描述符 write(),那么自从多个线程尝试写入同一个文件时,写入函数的任何机会都会被阻止?
我关心的是当一个线程调用写入单个文件时,当另一个线程调用写入同一个文件时也是如此。那么第二个线程的写入会先等待第一个线程的写入完成吗?如果是这种情况,我如何确保第二次 write 调用不会等待并且如果有第一次写入会立即返回,因为我不希望第二个线程的写入等待。
谢谢
【问题讨论】:
-
不如先试试看吧?
-
是的..我已经写了代码..问题是我怎么知道写功能被阻止了?关于如何测试的任何建议?
-
Linux 没有内置任何东西来锁定已打开写入的文件。就像拉胡尔说的那样,试试看会发生什么。
-
@xnine - 感谢您的回复。如果写函数不会被阻塞,那么open()的O_NONBLOCK标志有什么用?
-
我想知道您的一些 cmets 是否对 Unix I/O 上下文中的“阻塞”与“锁定”的含义感到困惑?您正在询问多个线程写入同一个文件,这将是一个“锁定”问题,但您使用的是“阻塞”一词,这是当您尝试从具有没有可读取的数据。
标签: linux