gpt4 book ai didi

c# - 任务并行库执行长时间运行的操作

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:49 24 4
gpt4 key购买 nike

使用任务(任务并行库)执行长时间运行的操作(有时可能需要几个小时才能完成)是一种好方法吗?

在其中一个堆栈溢出线程中,我看到一个人告诉如果长时间运行的操作需要超过几秒钟才能完成,请不要使用线程池。我有这样的疑问,因为 Task 也在幕后使用 ThreadPool,以便分配工作,而无需经历线程创建/或不必要的上下文切换的开销。

最佳答案

只要您保持前台线程处于事件状态,就可以使用任务 - 如果您正在运行大量并发任务,只需确保指定 TaskCreationOptions.LongRunning 选项以防止线程饥饿。

下面的简单控制台应用程序演示了缺少前台线程将如何在进程结束时过早终止“长时间运行的线程”。

class Program
{
static void Main( string[] args )
{
Task.Factory.StartNew( () =>
{
Console.WriteLine( "Before sleep" );
System.Threading.Thread.Sleep( 5000 );
Console.WriteLine( "After sleep" );
}
, TaskCreationOptions.LongRunning
);

// press a key prior to the 5 second sleep expiration to demonstrate early termination
Console.ReadKey();
}
}

关于c# - 任务并行库执行长时间运行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com