如何使用TPL的ActionBlock写入文件?

时间:2015-04-09 22:51:44

标签: c# .net io parallel-processing task-parallel-library

我正在.Net TPL中构建一个管道,它经历了一系列数据转换步骤,最终需要将输出写入文件。我正在考虑使用ActionBlock写入文件。但是,我不确定这是否会遇到任何问题......例如。多个线程试图写入同一个文件。

我是否需要担心写入争用?我想知道将ExecutionDataflowBlockOptions.MaxDegreeOfParallelism设置为高于1的值是否是个好主意。这会导致任何问题吗?

有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

  

我想知道将ExecutionDataflowBlockOptions.MaxDegreeOfParallelism设置为高于1的值是否是个好主意。这会导致任何问题吗?

是的,它当然可以,具体取决于你究竟做了什么。 .Net中的大多数类型都不是线程安全的,这意味着您不能同时使用多个线程中的同一对象。其中包括System.IOFileStream个对象。

另一方面,如果您将MaxDegreeOfParallelism设置为1,则不会出现任何问题。