예제 #1
0
        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());
        }
예제 #2
0
 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;
     });
 }
예제 #3
0
        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());
        }