c# - 创建多个线程并与它们通信

标签 c# multithreading

我有一个程序,需要很长时间才能初始化,但执行速度相当快。

它正在成为一个瓶颈,所以我想启动该程序的多个实例(如池)并已初始化,其想法是仅传递执行所需的参数,从而节省所有初始化时间。

问题是我只找到了如何启动传递参数的新进程:
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/

相关文章:

multithreading - 如何阻塞主线程等待完成 block 结束

C# 和并发读取线程安全对象?

c# - 获取卡中的 token 以从个人资料中检索用户图像

c# - 在 form_load 和 button_click 中调用函数有什么区别吗?

c# - 创建文件服务器上文件的下载链接

c# - 我可以将某些东西注入(inject)到 MvcApplication 中吗?

java - 使用 "Real-Time Feeling"将行添加到 JTable

c# - 是否可以使用 ResourceManager 获取资源的评论?

c# - 从 BackgroundWorker 开始获取响应

python - 在多线程环境中是否需要锁来保护 python 2.7 列表?