【发布时间】:2014-04-28 14:16:23
【问题描述】:
我正在设计和开发一个api,其中多个线程从网上下载文件,然后将其写入磁盘。
如果使用不当,可能会发生同一个文件被多个线程下载和写入,这将导致写入磁盘时出现异常。
我想在写入文件的部分周围使用lock() { ... } 来避免这个问题,但显然我不想用全局对象锁定,只是与该特定文件相关的东西,因此并非所有线程都写入文件时锁定。
我希望这个问题可以理解。
【问题讨论】:
-
使用memory-mapped文件?
-
@Sinatr:你到底是什么意思?
-
使用异常处理这种类型的竞争条件似乎是合适的。问题是什么?我认为不需要锁。
-
@Bananamansam 这样的全局锁正是我想要避免的。
标签: c# .net multithreading file-io mutex