c# - Task.Factory.StartNew() 是否保证至少创建一个新线程?

标签 c# multithreading threadpool task-parallel-library

我知道 TPL 不一定为并行集中的每个任务创建一个新线程,但它总是至少创建一个线程吗?例如:

private void MyFunc()
{
    Task.Factory.StartNew(() =>
    {
        //do something that takes a while   
    });

    DoSomethingTimely();   //is this line guaranteed to be hit immediately?
}

编辑:澄清一下:是的,我的意思是保证执行 MyFunc() 的线程不会用于执行 //do需要一段时间的事情

最佳答案

这取决于当前的默认值 TaskScheduler是。您几乎可以想象有人在做一些可怕的事情,比如实现一个 SynchronousTaskScheduler,它在 QueueTask 期间执行任务主体,并在返回之前将其设置为完成。

假设您没有让其他人弄乱您的任务调度程序,您就不必担心。

关于c# - Task.Factory.StartNew() 是否保证至少创建一个新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410930/

相关文章:

c# - 查找未关闭的FileStream

c# - 如何自动更新站点 RSS 提要

c++ - 线程安全和静态函数

c++ - 可以在构造函数中创建 Pthreads 吗?

multithreading - .NET 4.0中ThreadPool是如何实现的?

multithreading - 带有 OpenMP : overhead and changing the number of threads 的线程池

c# - 如何在 DataGridView 中抑制自动生成的列?

c# - `foreach` 什么时候停止处理字符串?

python - 如何停止 pyftpdlib FTP 服务器?

Java 在 SwingWorker 中渲染游戏 map 无法正常工作