如何在TPL中检查变量是否已在其他线程中更改

时间:2013-03-18 20:07:56

标签: c# task-parallel-library

我需要检查TPL程序中的变量是否已更改。例如,如果线程更改了易失性字符串变量,则其他线程不需要更改它。由于变量的类型是易失性的,其他线程可以使用它。我该怎么办?

2 个答案:

答案 0 :(得分:3)

  1. volatile可能不会按照您的想法行事。不要使用它,因为它不能满足你的需要。
  2. 您无法确定变量是否已更改。也许您可以添加bool wasChanged = false并在写入变量时将其设置为true。请记住为此使用正确的同步(可能是lock)。

答案 1 :(得分:2)

在给定变量类型限制的情况下,检查共享变量与其预期值的确定方法是使用Interlocked操作。