在C# TPL Dataflow库中,SingleProducerConstrained是ActionBlock的一种优化选项,当只有一个线程在提供操作块时,可以使用它:
如果一个块只会被单个生产者使用,也就是说,每次只有一个线程会在块上使用Post、OfferMessage和Complete等方法,那么可以将此属性设置为true,以通知块无需应用额外的同步。
如果使用单个MaxDegreeOfParallelism > 1的TransformBlock来提供ActionBlock,是否会违反将SingleProcerContrained设置为true的规则?还是说单个MaxDegreeOfParallelism > 1的TransformBlock仍然被视为“单个生产者”?
如果一个块只会被单个生产者使用,也就是说,每次只有一个线程会在块上使用Post、OfferMessage和Complete等方法,那么可以将此属性设置为true,以通知块无需应用额外的同步。
如果使用单个MaxDegreeOfParallelism > 1的TransformBlock来提供ActionBlock,是否会违反将SingleProcerContrained设置为true的规则?还是说单个MaxDegreeOfParallelism > 1的TransformBlock仍然被视为“单个生产者”?