Created
February 8, 2012 20:03
Revisions
-
Restuta revised this gist
Feb 8, 2012 . No changes.There are no files selected for viewing
-
There are no files selected for viewing
File renamed without changes. -
There are no files selected for viewing
File renamed without changes. -
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,58 @@ using System; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication3 { class ThreadUnsafe { public static int _val1 = 1; public static int _val2 = 1; private static readonly object syncObj = new object(); public void Go() { lock (syncObj) { if (_val2 != 0) { Thread.Sleep(0); var i = _val1/_val2; } } _val2 = 0; } } class Program { static void Main(string[] args) { ThreadUnsafe threadUnsafe1 = new ThreadUnsafe(); ThreadUnsafe threadUnsafe2 = new ThreadUnsafe(); for (int i = 0; i < 10000; i++) { Task task = new Task(threadUnsafe1.Go); Task task1 = new Task(threadUnsafe2.Go); task.Start(); task1.Start(); try { Task.WaitAll(task, task1); } catch (AggregateException ex) { Console.WriteLine(i); Console.WriteLine(ex); } ThreadUnsafe._val2 = 1; } } } }