public async Task TaskLocalTest() { var list = new List <Task>(); var taskLocal = new TaskLocal <long>(); for (int i = 0; i < 10; i++) { list.Add(Task.Factory.StartNew(async() => { long v = DateTime.Now.Ticks; taskLocal.Value = v; Console.WriteLine("Task Local Value Before : {0}", taskLocal.Value); await Task.Delay(100); Console.WriteLine("Task Local Value After : {0}", taskLocal.Value); Assert.AreEqual(v, taskLocal.Value); })); } await Task.WhenAll(list.ToArray()); }
static SparcRegister() { IntValueMap = new TaskLocal<int[]>(() => { var vals = Enum.GetValues(typeof(SparcReg)); var ret = new int[vals.Length]; var ra = VirtRegAlloc.Instance; foreach (var v in vals) { ret[(int)v] = ra.Alloc(); } return ret; }); }
static async Task TestCase() { var list = new List <Task>(); var taskLocal = new TaskLocal <long>(); for (int i = 0; i < 10; i++) { list.Add(Task.Factory.StartNew(async() => { taskLocal.Value = DateTime.Now.Ticks; System.Console.WriteLine("Task Local Value Before : {0}", taskLocal.Value); Task.Delay(1000); System.Console.WriteLine("Task Local Value After : {0}", taskLocal.Value); })); } await Task.WhenAll(list.ToArray()); }