C# 如何为用于以下场景的树结构实现线程安全?
我正在使用位于以下链接的C#代码来实现一个Ram磁盘项目C# 如何为用于以下场景的树结构实现线程安全?,c#,.net,windows,filesystems,dokan,C#,.net,Windows,Filesystems,Dokan,我正在使用位于以下链接的C#代码来实现一个Ram磁盘项目 对源代码的描述 到源代码 作为总结,上述代码使用简单的树结构来存储目录、子目录和文件。根目录下是一个MemoryFolder对象,它存储零个或多个“MemoryFolder”对象和/或MemoryFile对象。每个MemoryFolder对象依次存储零个或多个MemoryFolder对象和/或MemoryFile对象,以此类推,深度无限 但是,代码不是线程安全的。实现线程安全最优雅的方式是什么?此外,如何通过使用适当的锁定策略来实施典
- 对源代码的描述
- 到源代码
MemoryFolder
对象,它存储零个或多个“MemoryFolder”对象和/或MemoryFile
对象。每个MemoryFolder
对象依次存储零个或多个MemoryFolder
对象和/或MemoryFile
对象,以此类推,深度无限
但是,代码不是线程安全的。实现线程安全最优雅的方式是什么?此外,如何通过使用适当的锁定策略来实施典型文件系统的以下非详尽的多线程需求列表
ReadFile
线程完成其
执行ReadFile
线程同时访问,但限制对单个WriteFile
线程的访问ReadFile
线程(几乎同时触发),
来自不同应用程序的每个应用程序都尝试使用
相同的名称(假定文件夹不存在)
在触发两个线程之前),进入
Ram磁盘总是成功,而第二个磁盘总是失败。换句话说
换句话说,线程执行的顺序是确定的GetDiskFreeSpace
正在运行
在一个单独的线程下,在所有
WriteFile
正在执行的线程完成其执行。所有未开始执行的后续WriteFile
线程将被阻止,直到GetDiskFreeSpace
线程完成其执行ReaderWriterLockSlim
不能跨进程工作。然而,您可以使用同步原语的组合来实现类似的功能,或者创建一个为请求提供服务的设备驱动程序(或服务),从而使其保持在相同的过程中