我正在.Net TPL中构建一个管道,它经历了一系列数据转换步骤,最终需要将输出写入文件。我正在考虑使用ActionBlock写入文件。但是,我不确定这是否会遇到任何问题......例如。多个线程试图写入同一个文件。
我是否需要担心写入争用?我想知道将ExecutionDataflowBlockOptions.MaxDegreeOfParallelism设置为高于1的值是否是个好主意。这会导致任何问题吗?
有更好的选择吗?
答案 0 :(得分:1)
我想知道将ExecutionDataflowBlockOptions.MaxDegreeOfParallelism设置为高于1的值是否是个好主意。这会导致任何问题吗?
是的,它当然可以,具体取决于你究竟做了什么。 .Net中的大多数类型都不是线程安全的,这意味着您不能同时使用多个线程中的同一对象。其中包括System.IO
等FileStream
个对象。
另一方面,如果您将MaxDegreeOfParallelism
设置为1,则不会出现任何问题。