Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
meloncrashed
V2EX  ›  Linux

多程序同时读写同一文件,会有冲突吗?

  •  
  •   meloncrashed · Nov 19, 2015 via iPhone · 10504 views
    This topic created in 4011 days ago, the information mentioned may be changed or developed.
    13 replies  •  2015-11-20 10:06:35 +08:00
    meloncrashed
    meloncrashed
    OP
    Nov 19, 2015 via iPhone
    1
    p1 write 2^16 into file
    p2 write 0 into file
    p3 read from file
    三程序一起循环, 任意时刻 p3 读取的结果只有 2^16 或 0 这两种可能嘛?会不会读取部分数据 如 2^8
    meloncrashed
    meloncrashed
    OP
    Nov 19, 2015 via iPhone
    2
    三程序各自独立循环运行
    meloncrashed
    meloncrashed
    OP
    Nov 19, 2015 via iPhone
    3
    写入时是覆盖写入
    lonelygo
    lonelygo
    Nov 19, 2015❤️1
    4
    那就要考虑时序了吧,在设计控制系统时,甚至需要考虑时 0➡️1 时候的“上升沿”的问题。
    问题是:为何要双写?
    yuelang85
    yuelang85
    Nov 19, 2015❤️1
    5
    会,需要加锁
    meloncrashed
    meloncrashed
    OP
    Nov 19, 2015 via iPhone
    6
    @lonelygo
    @yuelang85
    那么如果 p1 不停覆盖写入当前时间到 file1 ,然后用 reader 不断读取 file1 。

    每次 reader 读取的是一个完整时间嘛? 如果不是 需要什么措施保证读取的完整性。
    meloncrashed
    meloncrashed
    OP
    Nov 19, 2015 via iPhone
    7
    如何防止当正在写入时,发生读取的情况出现。
    zlbruce
    zlbruce
    Nov 19, 2015❤️2
    8
    man lockf
    kjj98709
    kjj98709
    Nov 19, 2015
    9
    加锁
    martifact
    martifact
    Nov 19, 2015
    10
    可能有信号中断,所以保证不了。写操作锁 inode ,是原子的,写时读是什么机制就不知道了。
    shakoon
    shakoon
    Nov 19, 2015
    11
    操作系统会限制你不能有多个进程同时以写入 /追加方式打开一个文件的吧,所以我觉得楼主的问题不成立。
    如果一个进程以写入 /追加方式打开文件,其他进程以读取方式打开,通常情况下无论前者对文件做了什么编辑,后者都获取不到的。在打开文件时文件全部内容就已经被读入内存了,后者只会从内存中进行读取。所以某些编辑器可以设置在编辑巨型文件时不使用内存,以加快加载效率。
    firemiles
    firemiles
    Nov 19, 2015
    12
    @shakoon linux 是允许多个写的, windows 不行
    yuriko
    yuriko
    Nov 20, 2015
    13
    @shakoon 你那个是内存影射的逻辑罢了,而且不会是全文件的,不然大点的文件得跪
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2244 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    ♥ Do have faith in what you're doing.