C# 如何正确地执行线程?
我一直在学习.Net线程,并学习了C# 如何正确地执行线程?,c#,.net,multithreading,thread-safety,parallel-processing,C#,.net,Multithreading,Thread Safety,Parallel Processing,我一直在学习.Net线程,并学习了threading.Task和threading.Task.Parallel类。现在,使用Parallelclass I的ForEach方法在单独的线程上处理每个对象。然而,我相信ForEach方法在返回之前会等待所有线程完成执行。这导致在其他线程之前完成的线程处于空闲状态。我想让这些线程不断工作。这就是我希望做的: 我让线程A负责从表中选择记录,然后启动n个工作线程来处理每个记录 每当工作线程完成其工作时,它都应该向线程a请求下一条要处理的记录 将记录分配给工
threading.Task
和threading.Task.Parallel
类。现在,使用Parallel
class I的ForEach
方法在单独的线程上处理每个对象。然而,我相信ForEach
方法在返回之前会等待所有线程完成执行。这导致在其他线程之前完成的线程处于空闲状态。我想让这些线程不断工作。这就是我希望做的:
我让线程A
负责从表中选择记录,然后启动n个工作线程来处理每个记录
a
请求下一条要处理的记录A
用完,它应该返回数据库并获取更多记录。我猜这个分配过程必须包装在一个关键的部分块中有人能给我指一个适合我的场景的教程吗?你所讨论的通常被称为“线程池”。可能与您的兴趣相关。对于生产者-消费者场景,您可以使用已经是线程安全的 这意味着您可以从任何线程填充它,并从所有其他使用者线程中弹出要处理的项目,而无需使用锁定