Jan*_*007 4 task task-parallel-library c#-4.0
试图掌握TPL.
为了好玩,我尝试用随机睡眠创建一些任务来查看它是如何处理的.我瞄准火灾并忘记模式..
static void Main(string[] args)
    {
        Console.WriteLine("Demonstrating a successful transaction");
        Random d = new Random();
        for (int i = 0; i < 10; i++)
        {
            var sleep = d.Next(100, 2000);
            Action<int> succes = (int x) =>
            {
                Thread.Sleep(x);
                Console.WriteLine("sleep={2}, Task={0}, Thread={1}: Begin successful transaction",
                   Task.CurrentId, Thread.CurrentThread.ManagedThreadId, x);
            };
            Task t1 = Task.Factory.StartNew(() => succes(sleep));
        }
        Console.ReadLine();
    }
但我不明白为什么它输出所有行到控制台忽略睡眠(随机)
有人可以向我解释一下吗?
重要:
TPL默认的TaskScheduler不保证每个任务的线程 - 一个线程可用于处理多个任务.
调用Thread.Sleep可能会影响其他任务的性能.
您可以使用TaskCreationOptions.LongRunning提示构造任务,这样TaskScheduler将为任务分配一个专用线程,并且可以安全地阻止它.