我有一个程序,需要很长时间才能初始化,但执行速度相当快。
它正在成为一个瓶颈,所以我想启动该程序的多个实例(如池)并已初始化,其想法是仅传递执行所需的参数,从而节省所有初始化时间。
问题是我只找到了如何启动传递参数的新进程:
How to pass parameters to ThreadStart method in Thread?
但我想正常启动该进程,然后能够与其通信以向每个线程发送执行所需的参数。
我发现的最好的方法是创建多个线程,在其中初始化程序,然后使用某种通信机制(例如命名管道,因为它都在同一台机器上运行)能够传递这些参数并触发执行程序(例如,其中一个触发器可能会中断无限循环)。
我问是否有人可以建议一个比我想出的更优化的解决方案。
最佳答案
我建议您不要直接使用Thread
,而使用TPL,如下所示:
foreach (var data in YOUR_INITIALIZATION_LOGIC_METHOD_HERE)
{
Task.Run(() => yourDelegate(data), //other params here);
}
有关 MSDN 上的 Task.Run
的更多信息, Stephen Cleary blog
关于c# - 创建多个线程并与它们通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389459/