C#多线程问题(求救)

Dong 2008-12-06 01:40:22
大家好.

我用C#开发了一个多线程程序,但这个多线程在Debug编译下可以并发出来,可是在Release下却不可以.是不是在Release模式下编译一些代码被编译器"优化"了? 我该怎么做才可以在Release模式下并发出多线程工作?

还有一个大问题.为什么我的多线程在Debug模式下开了大概20个线程CPU就被100%使用了(电脑4是个CPU的,功能很强大的)?C#对多线程的并发数是怎么控制的?
...全文
339 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2008-12-27
  • 打赏
  • 举报
回复
点击结贴
然后给分
一游 2008-12-27
  • 打赏
  • 举报
回复
看你问题是想用多线程来接收SOCKET数据吧,我前段时间做过这方面的东西,可能具体说说你的问题或者说流程


我感觉是你的流程出了问题,我的程序也是8个客户端,1周不关,程序占CPU30左右
Dong 2008-12-27
  • 打赏
  • 举报
回复
还有个问题,怎么结帖? 点给分框都没反应的,而且有个专家排列的网页不停的在动来动去的,这些并不是我们需要的啊.
说实话,都2年没来这里了,因为觉得网站越来越差了,搞了很多没必要的东西.
特别有一段时间,连那里进入论坛都不知道,那个流程简直.......

其实我觉得技术论坛不要搞到太商业化,现在广告一堆又一堆.
Dong 2008-12-27
  • 打赏
  • 举报
回复
总技术分排名:678
--------------
我很惊讶这个排名问出的问题。
-----------------------------------------

技术和编程能力不是100%挂钩的,问题低级我也敢问出来,这就是我的能力了.
half_bucket 2008-12-08
  • 打赏
  • 举报
回复
mark
yagebu1983 2008-12-08
  • 打赏
  • 举报
回复
线程池!!
也得用信号量!!
much0726 2008-12-08
  • 打赏
  • 举报
回复
总技术分排名:678
--------------
我很惊讶这个排名问出的问题。
jfd198512 2008-12-08
  • 打赏
  • 举报
回复
学习! 我是新手只能先看看大家的思想! 呵呵
Dong 2008-12-08
  • 打赏
  • 举报
回复
哎.谢谢大家了.

我的线程都是在等待网络的返回数据.有办法让在等待的Socket出来,
必要时再接收吗?记得是几是个Socket一起工作的.
xiaozhimin1978 2008-12-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hornbills 的回复:]
关于CPU利用率,线程的占用跟CPU的线程是对应的

如果是4枚处理器,处理器是单核的,4个满负荷的单线程应用令CPU占用达到100%

如果是4枚处理器,处理器是双核的,8个满负荷的单线程应用令CPU占用达到100%

如果是2枚处理器,处理器是四核的,8个满负荷的单线程应用令CPU占用达到100%

单线程应用可以用MS的计算器来模拟,运算一个大数的阶乘即可
[/Quote]

支持

一个线程只要没有等待状态,基本上会让一个核的使用率占光,关键问题不在线程多少,而在线程有没有休息。
flyjimi 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 UPCC 的帖子:]
大家好.

我用C#开发了一个多线程程序,但这个多线程在Debug编译下可以并发出来,可是在Release下却不可以.是不是在Release模式下编译一些代码被编译器"优化"了? 我该怎么做才可以在Release模式下并发出多线程工作?

还有一个大问题.为什么我的多线程在Debug模式下开了大概20个线程CPU就被100%使用了(电脑4是个CPU的,功能很强大的)?C#对多线程的并发数是怎么控制的?
[/Quote]

线程执行过程中,适当加上sleep,可以降低CPU占用。
jiang_jiajia10 2008-12-06
  • 打赏
  • 举报
回复
线程池
GTX280 2008-12-06
  • 打赏
  • 举报
回复
在代码中加上[MTAThread]
deserveit 2008-12-06
  • 打赏
  • 举报
回复
建议使用线程池
lihuyin 2008-12-06
  • 打赏
  • 举报
回复
mark
tinghai_xu 2008-12-06
  • 打赏
  • 举报
回复
贴出代码吧
hornbills 2008-12-06
  • 打赏
  • 举报
回复
如果是4枚处理器,处理器是六核的,而且支持超线程,48个满负荷的单线程应用令CPU占用达到100%
hornbills 2008-12-06
  • 打赏
  • 举报
回复
关于CPU利用率,线程的占用跟CPU的线程是对应的

如果是4枚处理器,处理器是单核的,4个满负荷的单线程应用令CPU占用达到100%

如果是4枚处理器,处理器是双核的,8个满负荷的单线程应用令CPU占用达到100%

如果是2枚处理器,处理器是四核的,8个满负荷的单线程应用令CPU占用达到100%

单线程应用可以用MS的计算器来模拟,运算一个大数的阶乘即可
liningln0 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
...是不是在Release模式下编译一些代码被编译器"优化"了?
虽然有优化,但因该不会影响多线程。可能要有代码才能分析。

...C#对多线程的并发数是怎么控制的
CLR的线程池倒是有个最大线程数的限制,不过如果你用new Thread()而不用线程池倒没有什么限制。


C# code...为什么我的多线程在Debug模式下开了大概20个线程CPU就被100%使用了


如果你的线程是计算密集型的,4个线程就可以让4核的CPU满负荷了。
如果你的…
[/Quote]

还有,线程的多少不是问题。关键是线程的处理上,我以前做过一个项目,高峰的时候有进30个线程,不过处理数据的只有3个,其他都是显示或者数据库操作。
所以主要是数据计算上的同时运行线程不能太多。。
zzuyongp 2008-12-06
  • 打赏
  • 举报
回复
建议线程池 4核最好别并发超过10个线程
加载更多回复(3)

111,098

社区成员

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

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

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