C# 后台任务优化资源的使用
我的问题是关于执行任务和优化资源。我有一组任务,我通过轮询数据库来获取这些任务。这些任务中的大多数执行以下操作:C# 后台任务优化资源的使用,c#,multithreading,task,scheduled-tasks,C#,Multithreading,Task,Scheduled Tasks,我的问题是关于执行任务和优化资源。我有一组任务,我通过轮询数据库来获取这些任务。这些任务中的大多数执行以下操作: 连接到另一台服务器(SQL、MDX、Webservice等)并查询数据。(非I/O密集型) 接收数据并保存到服务器文件夹中的文件(I/O工作) 目前,我正在创建一个任务元数据队列。拾取任务元数据,创建一个任务(使其在单独的线程中运行)并执行。现在,我将并发任务的数量限制为可用的处理器内核的数量 显然,我正在考虑最大化服务器资源,以便尽快处理大多数任务。我想知道的是是否有改进的机会 以
Girija Shankar听起来像是一份工作。向上的向上的走开!IOCP扩展了标准的重叠I/O。IOCP可以使用少量的线程池线程来服务大量请求。这听起来很合理,如果它只是连接到服务器,我不明白为什么你不把代码放在与写入数据的线程相同的线程中。我认为连接线程的数量比处理器内核的数量还要多也是安全的,因为它们不会做任何密集型的事情。@Logan:谢谢你的回答。我没有听到你说“我不明白你为什么不把代码放在和写数据的线程相同的线程中。”。如果我正确理解了您所指的内容,那么我为什么不将调用代码放在线程1和线程2中。我现在有同样的东西。这是每个线程所做的:1。连接到服务器启动查询并等待。2.收到查询执行数据后,将其写入文件。但问题是它是同步的。我可以异步做这个吗?如果是这样的话,我可以像这样打开的最大线程数是多少?听起来像是一份工作。向上的向上的走开!IOCP扩展了标准的重叠I/O。IOCP可以使用少量的线程池线程来服务大量请求。这听起来很合理,如果它只是连接到服务器,我不明白为什么你不把代码放在与写入数据的线程相同的线程中。我认为连接线程的数量比处理器内核的数量还要多也是安全的,因为它们不会做任何密集型的事情。@Logan:谢谢你的回答。我没有听到你说“我不明白你为什么不把代码放在和写数据的线程相同的线程中。”。如果我正确理解了您所指的内容,那么我为什么不将调用代码放在线程1和线程2中。我现在有同样的东西。这是每个线程所做的:1。连接到服务器启动查询并等待。2.收到查询执行数据后,将其写入文件。但问题是它是同步的。我可以异步做这个吗?如果是这样,我可以像这样打开的最大线程数是多少?