关于多线程

lyfer 2012-10-09 04:39:34
有线程(Thread) t1,t2,t3,t4,其分别都为耗时的数据库查询、文件读写、远程服务调用等。这四个线程还会分别不定期的触发一些异步事件,事件的处理代码依然是耗时的相关操作。
以t1的主操作为例:

void t1_method()
{
while(true)
{
调用 WCF 服务...
数据持久化处理...
某些特定的条件满足触发事件...
}
}


问题如下:
t1,t2,t3,t4线程并非真正的并行执行,线程会占用CPU时间,也就是说当t1执行的时候其它3个线程都会处于等待状态。程序运行后会发现卡得严重。

由于平时少用线程,对线程不了解。

望不吝赐教
...全文
187 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbaldy 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:

除非你的cpu数量大于你的线程数量,线程才会是并行,否则都是顺序的


那可有其它的方法能让CPU占用降下来,串行也行
[/Quote]
只有降低处理速度了,例如加几个sleep
lyfer 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

除非你的cpu数量大于你的线程数量,线程才会是并行,否则都是顺序的
[/Quote]

那可有其它的方法能让CPU占用降下来,串行也行
mizuho_2006 2012-10-09
  • 打赏
  • 举报
回复
只有用多CPU或者多核CPU才能真正做到线程并行执行。CPU同一时间只能处理一个线程。
bdmh 2012-10-09
  • 打赏
  • 举报
回复
除非你的cpu数量大于你的线程数量,线程才会是并行,否则都是顺序的

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧