【发布时间】:2012-08-03 15:23:34
【问题描述】:
我在我的 while 循环中使用多线程, 作为
while(reader.read())
{
string Number= (reader["Num"] != DBNull.Value) ? reader["Num"].ToString() : string.Empty;
threadarray[RowCount] = new Thread(() =>
{
object ID= (from r in Datasetds.Tables[0].AsEnumerable()
where r.Field<string>("Num") == Number
select r.Field<int>("ID")).First<int>();
});
threadarray[RowCount].Start();
RowCount++;
}
但是对于 200 个阅读器来说,顺序执行只需要 0.4 秒 但是使用线程需要 1.1 秒...这是一个示例,但是当我在多个数据库操作的线程中使用多行代码执行它时,我遇到了同样的问题。
对于顺序,它需要 10 秒,对于线程,它需要更多...
谁能推荐我?
谢谢...
【问题讨论】:
-
建议什么?如您所见,线程和同步有开销。
-
你是怎么多线程的呢?线程不是免费的,也许你并行运行了太多东西并导致线程饥饿。
-
您在线程中执行的内容似乎也没有变化,或者我错过了什么?建议依次做。好像更快了……
-
建议你阅读这篇文章。关于多线程性能的精彩文章msdn.microsoft.com/en-us/library/ms810437.aspx
-
粘贴您的普通(非线程)代码? ...只是一些猜测:线程有一个开销,并且很明显你的任务太小了,以至于开销被证明对性能不利。您还在为每件事创建新线程(在给定时间只能在机器上运行有限数量的线程。线程池可能会提高性能)。
标签: c# multithreading