c# 线程CPU占用率高的问题 5C

我写了一个死循环当满足条件就跳出,然后用线程开始这个循环,但是一启动线程CPU占用就很高,即使死循环里面什么代码都没有。请问怎么解决这个问题,用计时器的话CPU占用就很低,但是用计时器键盘钩子经常掉。一会就提示键盘钩子线程退出,无响应。请问C#线程里面死循环怎么写CPU占用率低?

0

7个回答

加上Thread.Sleep(100);

2
showbo
支付宝加好友偷能量挖 楼猪肯定直接while(true){}....了。。都不暂停下的
一年多之前 回复

用while(true)循环时候每次循环期间必须加Thread.Sleep(),否则会因为无法切换线程导致CPU高占用,以及其他线程锁死

另外这个工作不要放在UI线程上,要用Thread,BackgroundWorker或者Task来做。

1

现在的CPU执行效率很高,while 方法如果没有限制 瞬间会执行几万条。图片说明,具体可以看下图,6s执行了百万次。

0

线程while循环最后一句加一句 Thread.Yield();

0

在循环中,每次执行的时候都需要thread。sleep(t),可以自己设置1或100都可以,不然cup会暴涨界面会卡死的

0

在循环里加上thread.Sleep()

0

thread.Sleep(100)
写在循环中,给线程休眠,还有就是优化你的代码。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# 多线程造成CPU占用率高解决办法
在C#开发中我们难免会用到多线程操作,而且很多时候需要开启多个线程一直监视某个状态,当线程多的时候就会造成CPU内存占用率过高。电脑配置低的根本吃不消。 private void button1_Click(object sender, EventArgs e) { Thread TH1, TH2, TH3, TH4, TH5; ...
linux问题排查 - 高cpu占用率的进程和线程
1.简介           一个程序,完成它预设的功能,并不能说明它是一个优良的程序。好的程序,应该是对资源的合理利用,亦或是 用更少的资源(使用合理的算法),实现更多有效的产出。       影响程序的资源一般而言分为4个:CPU、内存、IO、网络。本文着重讲解一下在linux系统下,如何查看高CPU占用率的进程,线程。        2.python代码       为了
多线程导致CPU使用率百分百原因
在编写一个控制台应用程序时,在使用多线程以及硬件厂家的dll文件时,认为dll文件里的方法自带一个超时时间,就没有再线程中进行sleep进行休息或其他中断操作,导致程序运行时CPU使用率达到百分之百,在添加上sleep进行休息后,CPU使用率未超过15%。 可能调用第三方dll方法时,内置的超时时间被CPU进行忽视,认为程序始终在进行死循环操作,导致CPU使用率爆满,这是我个人的想法,有问题请大
C#多核处理器,防止线程过多cpu占用满的情况
 当前项目使用第二个CPU Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)2; Thread T_GetFiles = new Thread(new ThreadStart(ThreadGetFiles));//获取文件线程 T_GetFiles.Start(); ...
Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
http://blog.csdn.net/chen3888015/article/details/7432868
C++ 多线程编程解决CPU占用率高问题
在用C++进行多线程编程的时候,时常需要写一些类似于死循环的结构来执行代码,这些死循环如果没有经过处理一直开着,那么CPU的占用率就会居高不下的做着很多无用的操做。为解决这个问题我们可以通过在各线程中的适当位置添加Sleep函数来休眠该线程,使其少做这些无用的操作。经过这个处理,正常能压缩掉一半以上的CPU占用。
多线程执行CPU过高问题
在项目开发过程中使用到多线程技术,但
小议 Thread.sleep(0) 造成 CPU占用率高的问题
首先,我们要清楚相关概念: 1.CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越 高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。现代分时 多任务操作系统对 CPU 都是分时间片使用的:比如A进程占用10ms,然后B进程占用30ms,然后空闲60ms,再又 是A进程占10ms,B进程占30ms
while循环&CPU占用率高问题深入分析与解决方案
java中while循环导致CPU占用率高问题分析与解决方案。操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片算法,而Windows则属于抢占式的。除了这里使用的Thread.sleep(1),相关的还有Thread(0) Thread.yeild()。Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。Thread.Sleep(1)无论有没有符合的线程,都会放弃 CPU 时间,因此 CPU 占用率较低。优化的话一般用sleep(1)
cpu占用率过高问题排查
背景介绍:项目war包发布到测试环境后,刚开始运行正常,过了一段时间所有查询都报504错误。登陆测试服务器查看日志,发现查询一直在报获取不到数据库连接的错误(数据库连接池用的是druid)。把配置文件下载到本地,本地代码正常运行,应该不是数据源配置的问题。楼主于是用了重启大法,重启后所有请求都正常了。但是接着发现一个很严重的问题,就是项目启动的时候cup占用率就到了100%,接着就开始了cpu占用...
c++多线程cpu占用率过高解决之道
多线程并发在我们日常的工作中占有相当的需求比例,但是多线程程序很容易造成CPU使用率过高的问题,问题的原因在于我们一般的线程函数是用来处理一些简单的、需要循环处理的事情,例如一般情况下,在线程函数中我们常常使用下面的逻辑代码 while( is_running ) { // do work //...... } 如果 "do work" 的工作特别简单,或者有的时候我们在do...
Qt程序CPU占用率较高的解决办法
Qt程序CPU占用率较高的解决办法 分析思路 总的来说,Qt程序CPU占用率较高的原因可能有以下几点: 1、在paintEvent中调用update函数,造成无限循环 2、频繁刷新数据 3、复杂的浮点运算 4、死循环 5、paintEvent里操作太多 我遇到这个问题的程序是利用多个子线程(接收子线程)同时接收并解析网口的数据,同时另外一个子线程(融合子线程)对多个子线程解析得到的数据进行融合...
c# 程序一直运行着,CPU占用率高的问题。
请教 c# 程序CPU占用率高的问题。 近日我也在写一个定时采集数据传递到服务器的工具,需要一直运行着,后台用一个线程每隔2秒就判断一次时间,是否到了设定的传输时间,到了点就传送。(System.Threading.Thread.Sleep(1000 * 2)) 现在它不传输的时候,我看了下cpu占用率50% 左右。 分析原因: 1. 使用了 while(true)这类的语句程序一直处
使用Java thread dump分析CPU高使用率和线程死锁问题
开门见山,本文将简述如何使用java thread dump来分析CPU高使用率以及线程死锁问题。  一般java thread dump用于web开发中分析web容器或是应用服务器的性能问题还是比较常用并有效的。常用的入门级web容器Tomcat,以及高级别的jboss、websphere、weblogic等的性能调优问题都可以使用java thread dump来分析。  首先,阐述一下t
如何查找占用CPU最高的线程及相关代码
场景:    某些线上服务,一段时间之内占用CPU特别高,如何确认这是否属于正常情况还是代码中出现了异常导致占用CPU特高呢?如何定位确认是哪个线程导致的?如何确认下是哪部分代码导致的CPU使用率偏高呢?      当然CPU使用高,并不一定意味着是有问题的,下面的方法仅用于排插问题的时候使用,例子也仅作为参考。(PS下面最终查询出来的具体代码使用CPU高是正常情况,这个需根据
CPU占用率高,用jstack定位代码位置
教你怎么用jstack定位CPU占用率高的代码 在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按cpu使用率排序 编写死循环demo,提高CPU占用比例 写一个简单的死循环demo,使得CPU占用率飙升 /** * @author erbon * @date 2018/8/16 上午11:25 */ public class Demo { pub...
嵌入式linux下线程CPU占用跟踪
本文章参考http://blog.csdn.net/shamofeiyu/article/details/21336557,受益匪浅,特收藏,感谢作者。1.linux系统CPU占用率高,首先需要查看那些进程cpu占用率高,这个通过top 命令,可以查看, 可见,我这里是n1l.bin 占用了几乎100% CPU,并且可看到进程id = 15262.进一步分析n1l.bin 里那些线程cpu占有率高
Vs+Qt线程减小cpu占用率
1、线程的功能使不停地发送数据 2、线程中采用的是在run()函数中while循环 发现while循环一直跑着会是cpu占用率比较高,为减小cpu占用率,可以在发送一次数据后usleep一段时间,但是这种做法有一定的缺陷,就是在sleep的这段时间内如果有数据准备好,可以发送时就不会不及时。改进为Windows的事件机制,具体代码如下: void ImageSendThread::run()
Linux查看线程信息,定位某线程占用CPU高问题
Linux查看线程信息,定位某线程占用CPU高问题 相关命令:top, ps aux | grep pid, jstack 1、首先使用top命令定位到占用CPU高的进程PID [root@QIANZI-BASE home]# top 查看进程的详细信息 [root@QIANZI-BASE home]# ps aux | grep PID 2、获取线程信息,并找到占用CPU高的线程 ...
远程调试cpu过高问题
最近发现PlatformServer.exe的cpu占用几乎一直保持在100% .exe和相关.dll加上debug info,然后用vs remote debugger远程调试 用Process Explorer可看到哪个线程占用的cpu比较高 最终发现是mbedtls相关类在一个循环中 do {         auto ret=xxxx;         if (ret == ...
占用cpu高的调试方法
linux进程高cpu问题分析   1.用top命令查看哪个进程占用CPU高 gateway网关进程14094占用CPU高达891%,这个数值是进程内各个线程占用CPU的累加值。     PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND      14094 root      15   0  315m
jvm调优-锁定占用cpu过高线程的jstack信息
查找应用进程pid(这里以tomcat为例,假如得到:32528) ps -ef |grep tomcat 根据进程pid查找其下占用cpu高的线程pid(假如得到:32600) top -Hp pid 打印出线程pid的十六进制值(32600十六进制值:7f58) printf "%x\n" 32528 通过jstack获取进程中某线程栈信息 jstack 32528 |g...
C# 获取当前所有进程线程CUP占用率
监控系统所有进程的CPU使用情况 显示CPU占用大于0的进程,定时刷新 可以查看当前系统运行的各进程cpu占用率 在CSDN上找到两个都不太好用,自己写了一个VS2013环境下编译通过 也可以直接运行\bin\Debug目录下的ConsoleApplication1.exe文件 用途:查看自己写的程序那个线程运行时间最多,耗资源等。
system_server等应用CPU占用率过高诊断的一种方法
问题 在测试过程中,我们通常发现诸如system_server,通过top命令查看这些应用一直在前 adb shell top查看这些一直在前列   这样我们就需要明确这些应用里面的线程哪个占用过多 使用 adb shell ps -t -p 刚刚的命令可以查询当前进程中的线程情况。这些对于开发了解哪些线程在占用cpu和资源很有帮助 adb she
嵌入式linux CPU占用率高的调试方法
1,主要是使用top命令,可看出哪个进程CPU占有率过高,但嵌入式linux的top是由busybox编译出来的,属于轻量级。PC上有的功能,嵌入式平台上可能没有,譬如“top -H”等。 2,另外ps命令可以看到各个进程的pid,包括内核线程,内核线程看起来更像用户态的进程 3,知道哪个进程占用过高后,可试着在用户态上动态修改进程的优先级,如:renice -19 383,其中-19是新的n...
关于程序出现cpu占用过高的问题排查、解决办法以及避免代码中出现cpu占用率过高
程序中出现cpu暂用率过高,一般是跳入死循环导致,当出现cpu暂用率过高,请先检查代码中循环(for、while)是否死循环,如果是线程中开的while循环干一件事,请检查while中是否调用sleep睡眠,如果没有睡眠一定会造成cpu占用率过高,因为不调用sleep,cpu不会切出去;所有线程中的while,请记得加sleep,这样可以避免cpu占用率过高的现象。 注:sleep(0)表示切出
一次java系统线程占用CPU过高问题的解决
1、下载Windows系统和应用程序监视工具Process Explorer https://download.sysinternals.com/files/ProcessExplorer.zip 2、打开ProcessExplorer,找到cpu占用高的java.exe,记下进程编号PID,比如当前是9520 3、双击java.exe进程,打开查看CPU占用高的线程,记下线程编号TID...
使用jstack分析java程序cpu占用率过高的问题
1,使用jps查找出java进程的pid,如3707 2,使用top -p 3707观察进程情况,然后Shift+h,显示该进程的所有线程。 3,找出CPU消耗较多的线程id,如3720,将3720转换为16进制0x7d0,注意是小写哦 4,使用jstack 3707 | grep -A 10 0x7d0 来查询出具体的线程状态。   通过这些线程状态便可基本定位问题之所在。 ...
一个cpu占用率高的小问题
早上醒来便被系统报警短信施加了不小的压力,系统夜间多次报警,cpu使用率过高(超过90%),昨天晚上确实是上线了一个计算类的需求,不过算法相对简单(简单来说就是取两个字符串的公共子串,然后做一些处理),主观上认为不会因为这导致cpu爆掉,但是问题就是随着这个需求出现的,肯定拖不了干系,哎,bug排查往往就是这样,感觉某某地方不应该有问题,但是除了他又别无怀疑对象。 火急火燎的赶到公司,先申请
找到占用cpu最高的线程
1,使用命令top -p ,显示你的java进程的内存情况,pid是你的java进程号,比如123 2,按H,获取每个线程的内存情况 3,找到内存和cpu占用最高的线程pid,比如15248 4,执行 printf 0x%x 15248 得到 0x3b90 ,此为线程id的十六进制 5,执行 jstack 123|grep -A 10 3b90,得到线程堆栈信息中3b90这个线程所在行的
查看linux线程的CPU占用率
测试代码如下: #include #include void *thread_routine(void *arg) { prctl(PR_SET_NAME, "child_thread"); int i = 0; while(1) { i++; i = i * 12345; } return (void *)0; } int main( void ) { pthre
关于创建线程后CPU使用率100%的问题
CPU使用100的问题之一
c#Winform程序CPU占用高的原因和解决方法
程序CPU占用高的可能原因:1、存在死循环;为什么死循环会导致CPU占用高呢?      虽然分时操作系统是采用时间片的机制对CPU的时间进行管理的,也就是说到了一定时间它会自动从一个进程切换到下一个进程。但是,当进入别的进程后,若该进程告诉系统它现在不需要做什么,不需要那么多的时间,这个时候,系统就会切换到下一个进程,当切换到死循环所在进程后,由于它一直在循环,永远告诉系统它有事情做(实质仅在死...
查看linux哪个线程占用cpu比较高
有时候在应用里面会出现cpu占用率很高的情况。 这时候就需要确定到底是哪个线程出了问题。 通常的ps,top等命令列出来的都是进程信息,而jvm通常只有一个主线程。 这就给我们debug造成了不便。于是想办法找出有问题的线程信息而非进程信息。   搜索了一下,大概有这么几种方式: 1.  cd /proc     grep SleepAVG  **/status  | sort -k...
qt延时之延时方法及cpu占用问题
参考资料:https://blog.csdn.net/tingsking18/article/details/5304254 qt的延时方法一般有以下3种: 1、精度低,卡界面,CPU占用少 Qt为我们提供了几个可以用于线程Sleep的函数,分别是: void QThread::sleep ( unsigned long secs ) [static protected] ...
代码运行时 CPU占用率100%的解决方法
为什么运行代码时,CPU占用率用率100%? CPU占用率100%,怎么办?
windows下查看线程的cpu占用率工具 procexp
在windows系统下,默认只能够查看进程的使用情况而不能查看线程的详细信息,使用此工具能够查看所有的线程的详细信息
关于top指令及cpu占用统计
原文链接: https://blog.csdn.net/cfy_phonex/article/details/18733731 通常,有如下方式可以得到 cpu 利用率情况: top 命令 e.g. top -m 20 -d 1 -t User 0%, System 6%, IOW 0%, IRQ 0% User 1 + Nice 0 + Sys 34 + Idle 494 + IOW 0 + ...
Strace诊断CPU跑高问题
手把手教你用Strace诊断问题 发表于2015-10-16 早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符,却十有八九看不出个所以然。本文通过一个简单的案例,向你展示一下在用 strace 诊断问题时的一些套路。
使用C++获取指定线程的CPU使用率
简单例子说明如何使用C++实现获取指定线程的CPU使用率
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习线程的问题 区块链问题