V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leosirius666a
V2EX  ›  程序员

多线程能操作同一个同一个目录吗

  •  
  •   leosirius666a · 2020-02-19 12:58:48 +08:00 · 2989 次点击
    这是一个创建于 1740 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如多个线程 copy 文件到同一个目录里面。这样不会有什么问题吧。linux 系统

    14 条回复    2020-02-19 15:30:01 +08:00
    yicong135
        1
    yicong135  
       2020-02-19 13:05:51 +08:00
    又不能提高 IO 性能
    leosirius666a
        2
    leosirius666a  
    OP
       2020-02-19 13:11:14 +08:00
    @yicong135 是因为 linux 系统会锁住目录吗?
    rekulas
        3
    rekulas  
       2020-02-19 13:16:18 +08:00   ❤️ 1
    他说的是你线程开再多,也受限于 IO 写的上限速度,没有什么实际的意义
    l4ever
        4
    l4ever  
       2020-02-19 13:20:14 +08:00
    当然可以,目录又不是文件, 不存在占用的问题.
    leosirius666a
        5
    leosirius666a  
    OP
       2020-02-19 13:26:42 +08:00
    @l4ever linux 中不是一切都是文件吗,
    szuwl
        6
    szuwl  
       2020-02-19 13:45:48 +08:00
    @rekulas 但是单线程并不能触及 IO 的上限
    swulling
        7
    swulling  
       2020-02-19 13:47:57 +08:00
    @szuwl 小文件场景下,或者随机写一般不能。顺序写可以达到上限
    ujued
        8
    ujued  
       2020-02-19 13:49:17 +08:00 via iPhone
    可以。比如下载多个文件到下载目录
    ipwx
        9
    ipwx  
       2020-02-19 14:04:07 +08:00
    机械硬盘是你最后的瓶颈啊大哥。不是说你想并发写就能写得了,受限于硬件啊。
    ipwx
        10
    ipwx  
       2020-02-19 14:04:52 +08:00
    在机械硬盘的情况下,顺序单线程写比多线程写快至少一个数量级,因为不需要寻道。SSD 会好很多,但是顺序单线程写还是最快的。
    blu10ph
        11
    blu10ph  
       2020-02-19 15:09:58 +08:00
    @leosirius666a 一切都是文件的意思是一切硬件设备都可以映射为一个文件,通过 io 控制设备,而不是真的是个文件,实际上很多东西也并没有映射为文件,比如 socket~
    Lax
        12
    Lax  
       2020-02-19 15:17:02 +08:00
    回复标题的问题:如果不是压测目录操作,比如批量创建空文件,不会有问题;即使压测估计你的场景也压测不出 bug。
    说一说要操作的文件数量和文件大小,就知道是不是顺序读写了。另外硬盘的类型也有影响,机械硬盘的顺序读写操作速度快于随机读写,SSD 盘就不一样了
    Mithril
        13
    Mithril  
       2020-02-19 15:28:07 +08:00
    没用的,多线程硬盘写入就只会更慢。
    icylogic
        14
    icylogic  
       2020-02-19 15:30:01 +08:00
    …… 建议你读一下 everything is a file 的真正含义,这个 file 不是“文件”(一段存储在磁盘等介质上的数据),而是一种 common interface for I/O devices,其实可以理解成一种简单的多态

    https://yarchive.net/comp/linux/everything_is_file.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5809 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:51 · PVG 09:51 · LAX 17:51 · JFK 20:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.