【发布时间】:2016-02-20 21:44:36
【问题描述】:
我们开发了windows服务,使用线程来消费数据库记录(一般是.Net 2.0)。代码块在下面展示。
for(int i=0;i<ThreadCount;i++)
{
ParameterizedThreadStart pts=new ParameterizedThreadStart(MyCode.DoWork)
Thread t=new Thread(pts);
t.Start(someObject);
}
ThreadCount 从 app.config.MyCode.DoWork(Object someObject) 代码块中读取 SQL server 中的一些数据,以及一些操作。除了我们调用 sp,查询还包含 with(rowlock) vs.
while(someObject.Running)
{
*/select some data
}
主要问题是如何改进我的 Windows 服务。一些与手动创建线程相关的文章增加了 CPU 成本与如何提高我的应用程序性能。如果我使用并行任务库带来任何优势。创建任务而不是创建线程。任务是否手动创建线程以查看可用的 CPU 计数,或者我转换为喜欢。
for(int i=0;i<ThreadCount;i++){
Task t=new Task(=>MyCode.Work());
}
【问题讨论】:
-
你确定 CPU 是这里的问题,对我来说看起来 DB 是瓶颈吗?你衡量绩效吗?对于初学者,您可以尝试并行。因为它会自动调整胎面数量。
-
没有CPU问题,但我正在努力提高我的性能。(有时CPU和DB探索编程,因为我们有很多windows服务,做一些操作db)。因为我们想要尽快操作我们的数据。
标签: c# multithreading performance