将一个文件复制到不同的目的地,每个目的地有一个线程,线程安全吗

本文关键字:目的地 线程 安全 有一个 一个 文件 复制 | 更新日期: 2023-09-27 18:20:37

我需要同时在不同的计算机上加载文件的内容。因为StreamReader会占用文件,所以我想在打开它之前将其复制到一个临时文件夹中

问题:即使复制目的地分离,同时复制文件的两个线程是否会相互影响?

将一个文件复制到不同的目的地,每个目的地有一个线程,线程安全吗

从多个线程/进程/机器读取文件是安全的,只要没有人同时写入该文件。

不要-在创建文件流时只使用正确的参数会容易得多。

关键是FileShare设置——它规定了允许对打开的文件进行哪些类型的操作。指定FileShare.Read,对同一文件执行任意数量的并发读取操作(也有FileShare.Read)都可以正常工作。

它就像一样简单

File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read)

您的操作正在读取。这就像两个人同时读一本书。所以它是线程安全的。

但是,如果您通过两个线程向文件写入一些注释,则这不是线程安全的。这就像两个人在一本文案上写一些笔记。他们会互相打扰,字母会不正确,意思也会不正确。