我在C#7.0的第871页中简要阅读了以下线程不安全示例:权威性参考。
public class ThreadUnsafe
{
static int val1=1, val2=1;
public static void Go()
{
if (val2 != 0) Console.WriteLine(val1 / val2);
val2 = 0;
}
}
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
ThreadPool.QueueUserWorkItem(x => ThreadUnsafe.Go());
}
ThreadUnsafe.Go();
Console.WriteLine("Press any key for continuing...");
Console.ReadKey();
}
}
我已经编写了一个测试程序并启动了2个或更多线程,但是无法获得除以零的异常。
我也在具有4个核心CPU和1个CPU VM的PC上运行了该测试程序,我也无法获得被零除的异常。
您能帮我如何在不安全的线程中运行此示例代码,并得到除以零的异常吗?