win10 cpu占用率高太高什么情况

鏈夊摢浜涘父瑙佸師鍥燙PU鍗犵敤鐜囪繃楂橈紵-c++,澶氱嚎绋媘ultithreading,performance,cpu,cpu-usage-CodeGo.net
鏈夊摢浜涘父瑙佸師鍥燙PU鍗犵敤鐜囪繃楂橈紵
鍦ㄦ垜鐨勫簲鐢ㄧ▼搴忕敤C ++锛屾垜宸茬粡鍒涘缓浜3绾跨▼锛
AnalysisThread锛堟垨鐩戝埗锛夛細瀹冭鍙栬緭鍏ユ枃浠讹紝鍒嗘瀽瀹冿紝骞剁敓鎴愭ā寮忓拰鎺掗槦鎴std::queue1銆
PatternIdRequestThread锛堟垨锛氬畠浠庨槦鍒梔eque鐨勫浘妗堬紝骞舵妸瀹冧滑锛屼竴涓帴涓涓紝閫氳繃涓涓鎴风绔紙鐢– ++锛 CodeGo.net锛屽畠杩斿洖鍥炬鐨剈id鐒跺悗灏嗗叾鍒嗛厤鍒扮浉搴旂殑鍥炬鍙戦佸埌鏁版嵁搴撲腑銆
ResultPersistenceThread锛氬畠鍋氫竴浜涗簨鎯咃紝浼氳皥鍒版暟鎹簱锛屽苟鑳芥甯稿伐浣滃棰勬湡锛屾嵁鑰岃█銆
鍓嶄袱涓嚎绋嬫瘡娆″彇60-80锛呴渶瑕35锛呯殑骞冲潎姘村钩銆
鎴戜笉鏄庣櫧涓轰粈涔堢嚎绋嬮噰鍙栭珮
鎴戝垎鏋愬畠锛屽涓嬫墍绀猴細濡傛灉瀹冩槸璋佷娇鍍忎笂涓嬫枃鍒囨崲鍐崇瓥鐨勬搷浣滅郴缁燂紝涓柇锛屽拰鍝釜绾跨▼搴旇缁欒闂郴缁熻祫婧愶紝濡侰PU閭d箞濡備綍鍦ㄤ竴涓繘绋嬩腑鐨勭嚎绋嬪彂鐢熸瘮鍒汉鏇村鐨凜PU锛熷畠鐪嬭捣鏉ュ儚绾跨▼寮鸿鍗犵敤CPU浠嶰S鐨勬灙鍙d笅锛屾垨鎿嶄綔绯荤粺鏈夌嚎绋嬩竴涓湡姝g殑鎯呮湁鐙挓锛屾墍浠ュ畠浠庝竴寮濮嬪氨鍋忓悜浠栦滑锛岀粰浠栦滑瀹冩嫢鏈夌殑鎵鏈夎祫婧愩傛湁浠涔堝彲浠ュ矀涓嶆槸鍏鐨勶紝骞秗ender浠栦滑骞崇瓑锛
鎴戠煡閬撹繖鏄ぉ鐪熺殑銆備絾鎴戝緱鍒扮殑鏇村锛屽鏋滄垜鎯虫部鐫杩欐潯绾匡細鎿嶄綔绯荤粺鍙互璁块棶鐨凜PU绾跨▼锛屾牴鎹伐浣滈渶瑕佺敱绾跨▼瀹屾垚鐨勫伐浣滈噺锛屼絾濡備綍鍋氭垨鎵ц涔嬪墠棰勬祴鐨勫伐浣滈噺
鎴戜笉鐭ラ亾浠涔堟槸楂橈紝鎴戜滑濡備綍璇嗗埆鍛紵鏄惁鍙互閫氳繃鏌ョ湅浠g爜鍙槸璇嗗埆瀹冧滑锛熷摢浜涘伐鍏凤紵
鎴戠殑Visual Studio 2010涓
1銆傛垜鏈夋垜鐨勬鐤std::queue涓哄ソ銆傛垜鐭ラ亾锛屾爣鍑嗗鍣ㄤ笉鏄嚎绋嬪畨鍏ㄧ殑銆備絾鏄紝濡傛灉鍙湁涓涓嚎绋嬫帓闃熺殑椤圭洰瑕佹帓闃燂紝閭d箞瀹冩槸瀹夊叏鐨勶紝濡傛灉鍙湁涓涓嚎绋媎eque涓殑閭欢锛熸垜鎯宠薄瀹冨儚涓涓猵ipeline锛屽湪涓杈规彃鍏ユ暟鎹紝鍙︿竴鏂归潰锛屽垹闄ゆ暟鎹紝閭d箞涓轰粈涔堜細鏄笉瀹夊叏鐨勶紝濡傛灉瀹冨仛浜嗕絾鏄紝杩欎笉鏄湰涓婚涓殑瀹為檯闂锛屼絾鏄紝浣犲彲浠ユ坊鍔犳敞閲婂湪浣犵殑绛旀锛岃В鍐宠繖涓棶棰樸
涔嬪悗鎴戞剰璇嗗埌鎴戠殑蹇欒嚜鏃嬫垜宸茬粡鍥哄畾鐫$湢鎸佺画3绉掋傛淇绋嬪簭鏄殏鏃剁殑锛屽緢蹇垜鐨勪簨浠朵唬鏇裤備笉杩囷紝鍗充娇鐫$湢鏃讹紝宸蹭笅闄嶅埌30-40锛咃紝鍋跺皵涔熶笂鍗囧埌50锛咃紝杩欎技涔庡苟娌℃湁浠庣殑瑙掑害鍙彇鐨勶紝鍥犱负绯荤粺涓嶄細鍒拌繖鏄洰鍓嶅伐浣滅殑鍏朵粬搴旂敤绋嬪簭鍝嶅簲涓庛
鏈夋病鏈変粈涔堝姙娉曪紝鎴戜粛鐒跺彲浠ユ彁楂樺楂樻濡傚墠闈㈡墍璇寸殑锛岀敓浜ц呯嚎绋嬶紙鍏朵腑澶ч儴鍒嗙殑CPU鍛ㄦ湡锛夎鍙栨枃浠讹紝瑙f瀽鏁版嵁鍖咃紙鏍煎紡锛夊湪閲岄潰锛屽苟鐢熸垚妯″紡浜嗗嚭鏉ャ傚鏋滅潯鐪犵殑璇濓紝浼氬噺灏戯紝浣嗕細鏄竴涓ソ涓绘剰鍚楋紵鏈変粈涔堟柟娉曞彲浠ヨВ鍐冲憿锛
鏈枃鍦板潃 锛欳odeGo.net/417041/
-------------------------------------------------------------------------------------------------------------------------
1. 涓汉鑰岃█锛屾垜浼氶潪甯哥敓姘旓紝濡傛灉鎴戠殑绾跨▼鏈夊伐浣滆鍋氾紝鑰屼笖鏈夋垜鐨勬満鍣ㄤ笂闂茬疆鐨勬牳蹇冩搷浣滅郴缁熷苟娌℃湁缁欎粬浠珮锛屾墍浠ユ垜瀹炲湪涓嶆槑鐧借繖鏈変换浣曢棶棰樺湪杩欓噷[缂栬緫锛氬師鏉ヤ綘蹇欑鐨勫惊鐜槸涓涓棶棰橈紝浣嗗湪鍘熷垯涓婃病鏈変粈涔堥敊楂
鍦∣S /鍑犱箮涓嶈兘棰勬祴涓涓伐浣滅嚎绋嬩細鍋氱殑鏁伴銆傜嚎绋嬫槸锛堣繃搴︾畝鍖栵級涓夌鐘舵佷箣涓锛
闃诲绛夊緟锛堢潯鐪狅紝涓涓猰utex浣 CodeGo.net锛孖 / O绛夛級
鍙繍琛岋紝浣嗗綋鍓嶆病鏈夎繍琛屽叾浠栫殑浜嬫儏閮芥槸
璇ヤ細閫夋嫨灏藉彲鑳藉鐨勪笢瑗挎潵杩愯锛屽洜涓哄畠鏈夋牳蹇冿紙鎴栬秴绾跨▼锛岀瓑绛夛級锛岀劧鍚庤繍琛屾瘡涓涓紝鐩磋嚦鍏堕樆姝㈡垨鐩村埌浠绘剰鏃舵湡绉颁负鈥滆繃鏈熴傞偅涔堝畠灏嗗惁鍒欙紝濡傛灉瀹冨彲浠ャ
鎵浠ワ紝濡傛灉涓涓嚎绋嬪ぇ閮ㄥ垎鐨勶紝鑰屼笉鏄樆濉烇紝濡傛灉鏈夋槸free鐨勪竴涓牳蹇冿紝閭d箞瀹冧細鍗犵敤澶ч噺鐨凜PU
鏈夊緢澶氱粏鑺傚湪濡備綍閫夋嫨杩愯浠涔堬紝鍩轰簬绫荤殑涓滆タ浼樺厛銆備絾鍏跺熀鏈兂娉曟槸锛岀敤澶ч噺鐨勫伐浣滆鍋氫竴涓嚎绋嬪苟涓嶉渶瑕佽棰勬祴鐨勫皢鍙槸濮嬬粓鍙瘡褰撻渶瑕侊紝鍥犺屽皢鍊惧悜浜庤幏寰
瀵逛簬浣犵殑姒滄牱寰幆锛屼綘鐨勪唬鐮佸疄闄呬笂骞舵病鏈夊仛浠讳綍浜嬫儏锛屾墍浠ヤ綘闇瑕佹鏌ュ畠鏄浣曡鍒ゅ畾5-7锛呯殑CPU鏄惁鏈夋剰涔変箣鍓嶈繘琛屼簡浼樺寲銆傜悊鎯虫儏鍐典笅锛屽弻鏍告満鍣ㄤ笂鍔犲伐涓轰富鐨勭嚎绋嬪簲璇ュ崰鎹50锛呯殑CPU銆備笂涓涓4鑺満锛25锛呫傛墍浠ワ紝闄ら潪浣犳湁鑷冲皯16涓唴鏍搁偅涔堜綘鐨勭粨鏋滄槸涓瑙侀挓鎯咃紙濡傛灉浣犳湁16涓唴鏍革紝閭d箞涓涓嚎绋嬪崰鏈35锛呯殑浜轰細鏇村姞鍦ㄤ竴涓爣鍑嗙殑妗岄潰鎿嶄綔绯荤粺鏈鏍稿績闂茬疆澶у鏁拌繖鏍风殑姣斾緥瓒婇珮鎮ㄧ殑瀹為檯绋嬪簭杩愯鏃堕棿涓婂崰鎹殑CPU锛屽氨鏇村ソ浜嗐
鍦ㄦ垜鐨勬満鍣紝鎴戠粡甯告墦鎴戠殑鏃跺欒繍琛屼富瑕佹槸瑙f瀽鏂囨湰浠g爜涓殑涓涓牳蹇冪殑浠峰笺
濡傛灉鍙湁涓涓嚎绋嬫帓闃熺殑椤圭洰瑕佹帓闃燂紝閭d箞瀹冩槸瀹夊叏鐨勶紝濡傛灉
鍙湁涓涓嚎绋媎eque涓殑閭欢锛
涓嶏紝杩欎笉鏄畨鍏ㄧ殑std::queue鐢ㄦ爣鍑嗙殑containers銆std::queue鏄竴涓槮鍖呰涓婄殑搴忓垪瀹瑰櫒鐨勯《閮紙vector锛deque鎴list锛夛紝瀹冧笉娣诲姞浠讳綍绾跨▼瀹夊叏銆 锛屽鍔犱簡椤圭洰鍜屽垹闄ら」鐩慨鏀癸紝渚嬪鏁版嵁鐨勭嚎绋嬬殑绾跨▼size棰嗗煙鐨勫熀纭瀹瑰櫒銆備綘闇瑕佹垨鑰呭悓姝ワ紝鎴栬呬緷璧栦簬atomicity璁块棶鍒版暟鎹殑瀹夊叏鏃犻攣闃熷垪缁撴瀯銆std::queue涓よ呴兘娌℃湁銆
缂栬緫锛氬ソ锛屾棦鐒朵綘蹇欒嚜鏃嬮樆濉為槦鍒椾腑锛岃繖鏄渶鏈夊彲鑳芥槸楂樼殑鎿嶄綔绯荤粺鐨勫嵃璞★紝浣犵殑绾跨▼鏄伐浣滅殑鏃跺欙紝浠栦滑瀹為檯涓婃槸娌℃湁鏍规嵁锛屼娇浠栦滑寰楀埌鍏ㄩ潰鐨凜PU杩欓噷鏈夋湁瓒g殑锛氬摢涓涓负鏇村ソ鐨勬ц兘妫鏌ュ彟涓涓嚎绋嬪竷灏斿湪java涓
鎴戝姖浣犺涔堝垏鎹㈠埌浜嬩欢鎴栧叾浠栧悓姝ラ槦鍒楋紝鑰屼笉鏄湅瀹冨浣曞幓銆
鍚屾牱锛屾帹鐞嗛槦鍒楁槸绾跨▼瀹夊叏鈥滅殑鍙湁涓や釜绾跨▼瀹冣濋潪甯
鍋囪闃熷垪鏄綔涓轰竴涓摼琛紝鎯宠薄涓涓嬶紝濡傛灉瀹冨彧鏈変竴涓垨涓や釜鍓╀綑浼氬彂鐢熶粈涔堛傛棦鐒朵綘娌℃湁鍔炴硶鎺у埗鐢熶骇鑰呯殑鐩稿閫熷害鍜岃繖寰堝彲鑳芥槸杩欑鎯呭喌锛屾墍浠ヤ綘鏈夊ぇtrouble浜嗐
铏界劧鍏朵粬浜哄凡缁忔纭湴鍒嗘瀽闂锛堟嵁鎴戝彲浠ュ憡璇夛級锛屽皾璇曟洿澶氱殑缁嗚妭娣诲姞鍒板缓璁殑瑙e喅鏂规銆
棣栧厛锛屾鎷殑闂锛
1銆傚鏋滀綘淇濇寔浣犵殑绾跨▼蹇欎簬绾虹罕鍦╢or寰幆鎴栫被浼硷紝杩欐槸CPU渚涚數鐨勪弗閲嶆氮璐广
2銆傚鏋滀互姣鍥哄畾鏁伴噺鐨剆leep锛堬級鍑芥暟锛屽畠鍙互鏄竴涓氮璐圭殑CPU锛屽お锛堝鏋滅敤閲忚繃浣庯級锛屾垨鎮ㄤ笉蹇呰鍦版嫋寤朵簡杩涚▼锛堝鏋滃畠澶珮锛夈傛湁娌℃湁鍔炴硶璁剧疆閲戦鎭板埌濂藉銆
浣犻渶瑕佸仛鐨勶紝鑰屼笉鏄粈涔堟槸涓涓被鍨嬬殑鐫$湢锛屽敜閱掑彧鏄湪閫傚綋鐨勫嵆姣忓綋涓涓柊鐨勪换鍔″凡缁忚拷鍔犲埌闃熷垪涓
鎴戝皢瑙i噴濡備綍鍋氬埌鐨凱OSIX銆傛垜鐭ラ亾杩欎笉鏄悊鎯崇殑锛屽綋浣犲湪Windows涓婏紝浣嗭紝浠庝腑鍙楃泭锛屼綘鍙互POSIX鍙敤浜嶹indows瀵瑰簲鐨勫嚱鏁板簱涓殑
绗1姝ワ細鎮ㄩ渶瑕佷竴涓猰utex浣撳拰涓涓俊鍙凤細
#include &pthread.h&
pthread_mutex_t *mutex = new pthread_mutex_t;
pthread_cond_t *signal = new pthread_cond_t;
/* Initialize the mutex and the signal as below.
Both functions return an error code. If that
is not zero, you need to react to it. I will
skip the details of this. */
pthread_mutex_init(mutex,0);
pthread_cond_init(signal,0);
姝ラ2锛氱幇鍦ㄧ殑绾跨▼鍐咃紝绛夊緟瑕佽鍙戦佺殑淇″彿銆傝繖涓兂娉曟槸锛岀敓浜ц呭彂閫佹瘡褰撳畠闄勫姞涓涓柊鐨勪换鍔¢槦鍒椾腑鐨勪俊鍙凤細
/* Lock the mutex. Again, this might return an error code. */
pthread_mutex_lock(mutex);
/* Wait for the signal. This unlocks the mutex and then 'immediately'
falls asleep. So this is what replaces the busy spinning, or the
fixed-time sleep. */
pthread_cond_wait(signal,mutex);
/* The program will reach this point only when a signal has been sent.
In that case the above waiting function will have locked the mutex
right away. We need to unlock it, so another thread (consumer or
producer alike) can access the signal if needed. */
pthread_mutex_unlock(mutex);
/* Next, pick a task from the queue and deal with it. */
涓婅堪绗2姝ユ湰鏉ュ簲璇ユ斁缃湪涓涓棤闄愬惊鐜傜‘淇濇湁鍔炴硶鐨勮繃绋嬩腑鎵撳嚭鏉ョ殑寰幆銆備緥濡-铏界劧鐣ユ樉绮楃硻-浣犲彲浠ラ檮鍔犱竴涓滅壒娈娾濅换鍔¢槦鍒椻滆烦鍑哄惊鐜'銆
姝ラ3锛氬惎鐢ㄧ敓浜ц呯嚎绋嬪彂閫佷俊鍙锋椂锛屽畠宸茬粡闄勫姞涓涓换鍔¢槦鍒楋細
/* We assume we are now in the producer thread and have just appended
a task to the queue. */
/* First we lock the mutex. This must be THE SAME mutex object as used
in the consumer thread. */
pthread_mutex_lock(mutex);
/* Then send the signal. The argument must also refer to THE SAME
signal object as is used by the consumer. */
pthread_cond_signal(signal);
/* Unlock the mutex so other threads (producers or consumers alike) can
make use of the signal. */
pthread_mutex_unlock(mutex);
绗4姝ワ細褰撲竴鍒囬兘瀹屼簡锛屼綘鍏抽棴浣犵殑绾跨▼锛屼綘蹇呴』閿姣乵utex鍜屼俊鍙凤細
pthread_mutex_destroy(mutex);
pthread_cond_destroy(signal);
鏈鍚庨噸鐢充竴娆′竴浠朵簨鍒汉宸茬粡璇磋繃锛氫綘蹇呴』涓涓櫘閫氱殑std::deque骞跺彂璁块棶銆傝В鍐崇殑鏂规硶涔嬩竴鏄0鏄庡張mutex锛屼箣鍓嶆瘡娆¤闂甦eque鐨勯攣瀹氾紝鍙冲悗瑙i攣銆
缂栬緫锛氬叧浜庣敓浜ц呯嚎绋嬪璇村嚑鍙ワ紝鍦ㄥ厜鐨勶紝鎹垜浜嗚В锛岀敓浜ц呯嚎绋嬫槸鐩墠鑷敱娣诲姞灏藉彲鑳藉鐨勪换鍔¢槦鍒楋紝鍥犱负瀹冨彲浠ャ傛墍浠ユ垜鎯冲畠浼氱户缁繖鏍峰仛锛屽苟淇濇寔CPU绻佸繖鐨勮寖鍥村唴锛屽畠涓嶆槸寤惰繜IO璁块棶銆傞鍏堬紝鎴戜笉璁や负鐢辨浜х敓鐨勯棶棰樼殑楂樼偣锛岃屾槸浣滀负涓涓ソ澶勩傜劧鑰岋紝涓涓煎緱鍏虫敞鐨勬槸锛岃闃熷垪灏嗘棤闄愬闀匡紝鏈夊彲鑳界敤瀹岀┖闂寸殑杩囩▼銆傚洜姝わ紝閲囧彇棰勯槻鎺柦灏嗘槸闄愬埗鐨勯槦鍒楃殑澶у皬锛屼互鍚堢悊鐨勬渶澶у硷紝骞跺叿鏈夌敓浜ц呯嚎绋嬫瘡褰撻槦鍒楀闀垮お闀裤
瀵规锛岀敓浜ц呯嚎绋嬩細澧炲姞涓涓柊鐨勯」鐩箣鍓嶆鏌ラ槦鍒楃殑闀垮害銆傚鏋滄槸瀹屾暣鐨勶紝瀹冧細鎶婅嚜宸辩殑鐫$湢锛岀瓑寰呬俊鍙锋槸鐢变竴涓彇涓涓换鍔′粠闃熷垪鏃跺彂閫併備负姝わ紝浣犱徊涓婅堪1銆
涔嬪墠锛屼綘鍙互寮濮嬫濊冨浣曚紭鍖栦綘鐨勭嚎绋嬶紝浣犻渶瑕佹湁涓涓湴鏂规槸鎵鏈夌殑CPU鐢ㄤ簡涓涓兂娉曪紝鏇村皯鐨凜PU銆傝幏鍙栫殑鏂规硶涔嬩竴鏄疌PU鍒嗘瀽鍣ㄣ傚鏋滀綘娌℃湁鐨勮瘽锛岄偅灏辩粰寰堝洶涓璇曘傝繖寰堝鏄撳拰鑷敱銆
鍦–PU鍒嗘瀽鍣ㄥ皢鐩戞帶姝e湪杩愯鐨勫簲鐢ㄧ▼搴忥紝骞堕噰鍙栧湪閭i噷鑺辫垂鐨勯煶绗︺傚洜姝わ紝瀹冧細缁欎綘鐨勫嚱鏁版帓搴忥紝浠栦滑鍦ㄩ噰鏍锋湡闂达紝鏈夊灏戜汉鍙紝绛変簡澶氬皯CPU鐨勬竻鍗曠幇鍦紝浣犻渶瑕佺湅鐪嬪垎鏋愮粨鏋滐紝浠庢渶娑堣桟PU鐨勮亴鑳藉嚭鍙戯紝鐪嬬湅浣犲彲浠ュ湪杩欎簺鏀瑰彉锛屼互鍑忓皯
閲嶈鐨勬槸锛屼竴鏃︿綘鏈夋帰鏌ョ粨鏋滐紝浣犳湁鍛婅瘔浣犱粈涔堟槸浣犵殑搴旂敤绋嬪簭鐨勬煇浜涢儴鍒嗗彲浠ヤ紭鍖栵紝浠ヨ幏寰楁渶澶х殑鍥炴姤瀹為檯鏁版嵁銆
鐜板湪璁╂垜浠冭檻杩欐牱鐨勪笢瑗匡紝浣犲彲浠ユ壘鍒伴偅浜涙秷鑰楀ぇ閲忕殑CPU銆
宸ヤ綔绾跨▼閫氬父鏄綔涓轰竴涓惊鐜傚湪寰幆鐨勯《閮紝杩涜妫鏌ワ紝浠ュ喅瀹氭槸鍚︽湁宸ヤ綔瑕佸仛锛屽苟鎵ц浠讳綍鍙敤鐨勫伐浣溿傚惊鐜殑鏂扮殑杩唬閲嶆柊寮濮嬪惊鐜
浣犲彲鑳戒細鍙戠幇锛屽儚杩欐牱鐨勫ぇ澶氭暟鍒嗛厤缁欒绾跨▼鐨凜PU閮借姳鍦ㄥ惊鐜拰妫鏌ヤ竴涓缃紝寰堝皯鑺辫垂瀹為檯涓婂仛鐨勫伐浣溿傝繖灏辨槸鎵璋撶殑蹇欑瓑寰呯殑闂銆備负浜嗛儴鍒嗚В鍐宠繖涓鐐癸紝浣犲彲浠ユ坊鍔犱竴涓sleep鍦ㄥ惊鐜凯浠d箣闂达紝浣嗚繖涓嶆槸鏈濂界殑瑙e喅鏂规銆傝В鍐宠繖涓棶棰樼殑鐞嗘兂鏂瑰紡灏辨槸鎶婄嚎绋嬩紤鐪犳椂锛屾湁娌℃湁宸ヤ綔鍋氾紝鑰屽綋鍏朵粬绾跨▼鐢熸垚宸ヤ綔锛屼负浼戠湢绾跨▼鍙戦佷俊鍙锋潵鍞ら啋瀹冦傝繖瀹為檯涓婃秷闄や簡寰幆寮閿锛岀嚎绋嬪皢CPU鐨勬椂鍊欐湁宸ヤ綔瑕佸仛銆傛垜閫氬父涓庝俊鍙烽噺锛屼絾鍦╓indows涓彲浠vent瀵硅薄銆備笅闈㈡槸涓涓崏鍥
class MyThread {
void thread_function() {
while (!exit()) {
if (there_is_work_to_do())
do_work();
go_to_sleep();
// this is called by the thread function when it
// doesn't have any more work to do
void go_to_sleep() {
sem.wait();
// this is called by other threads after they add work to
// the thread's queue
void wake_up() {
sem.signal();
璇锋敞鎰忥紝鍦ㄤ笂杩版憾娑蹭腑鐨勭嚎绋嬪嚱鏁版绘槸璇曞浘鍘籹leep鎵ц涓涓换鍔′箣鍚庛傚鏋滅嚎绋嬬殑闃熷垪涓湁澶氫釜宸ヤ綔椤圭洰锛岀劧鍚庡湪淇″彿閲忕殑绛夊緟灏嗚繑鍥烇紝鍥犱负姣忎釜椤圭洰琚坊鍔犲埌闃熷垪涓殑榧荤蹇呴』鍙玏AKE_UP锛堬級鍑芥暟銆
鎮ㄥ湪鎺㈡煡鍣ㄨ緭鍑哄彲鑳戒細鐪嬪埌鍙︿竴浠朵簨鏄紝澶у鏁扮殑CPU閮界敤鍦ㄤ簡宸ヤ綔绾跨▼锛岃屽畠姝e湪鍋氱殑宸ヤ綔鎵ц鐨勫嚱鏁般傝繖鍏跺疄骞朵笉鏄竴浠跺潖浜嬶紝濡傛灉澶ч儴鍒嗛兘鑺卞湪宸ヤ綔锛岄偅涔堣绾跨▼鏈夊伐浣滆鍋氾紝骞舵湁鍙敤鐨凜PU鍋氳繖椤瑰伐浣滐紝鎵浠ュ湪鍘熷垯涓婂苟娌℃湁浠涔堥敊鍦ㄨ繖閲屻
浣嗗敖绠″姝わ紝浣犲彲鑳戒笉婊℃剰锛屼綘鐨勮繖涔堝鐨凜PU锛岃繖鏍凤紝閭d箞浣犻渶瑕佺湅鐨勬柟寮忥紝杩欐牱瀹冨仛鐨勫伐浣滄洿鏈夋晥鍦颁紭鍖栦綘鐨勪唬鐮併
渚嬪锛屾偍鍙兘浼氬彂鐜板皬鐨勮緟鍔╁嚱鏁拌璋冪敤浠ョ櫨涓囪鐨勶紝鑰岃繖鏍风殑鍗曚竴鍑芥暟鐨勮繍琛屽揩锛屽鏋滀綘涔樹笂鍑犵櫨涓囦簡涓涓摱棰堢殑绾跨▼銆傚湪杩欎竴鐐逛笂锛屼綘搴旇鐮旂┒濡備綍杩涜浼樺寲锛屼互鍑忓皯鍦ㄨ繖涓嚱鏁颁腑锛岃涔堜紭鍖栦唬鐮侊紝鎴栭氳繃浼樺寲璋冪敤鑰咃紙S锛夋潵璋冪敤鍑芥暟灏
鍥犳锛岃繖閲岀殑绛栫暐鏄粠鏈鏄傝吹鐨勫嚱鏁版牴鎹垎鏋愭姤鍛婏紝骞跺紑濮嬪皾璇曞仛涓涓皬鐨勪紭鍖栥傜劧鍚庝綘閲嶆柊杩愯鍒嗘瀽鍣紝鐪嬬湅浜嬫儏濡備綍鍙樺寲銆備綘鍙兘浼氬彂鐜颁竴涓皬鏀瑰姩鏈澶氱殑CPU瀵嗛泦鍨嬪嚱鏁帮紝绉诲姩瀹冨埌绗簩鎴栫涓変綅锛屽苟鍥犳鏁翠綋闄嶄綆銆傚綋浣犵璐鸿嚜宸变负浣犳彁渚涙柊鐨勯《绾у嚱鏁伴噸澶嶇粌涔犮傜洿鍒颁綘婊℃剰浣犵殑搴旂敤绋嬪簭鏄负鏈夋晥锛屽洜涓哄畠鍙互鏄偍鍙互缁х画杩欎釜杩囩▼銆
绁濅綘濂借繍銆
绾跨▼鐨勮祫婧愶紝渚嬪涓涓樆濉/瑙i櫎闃诲鐨勭嚎绋嬩細甯︽潵涓娆¤繃璐圭敤銆傚鏋滀竴涓嚎绋嬮樆濉/瑙i櫎闃诲姣忕鏁颁竾杩欎細娴垂鏄捐憲鏁伴噺鐨凜PU銆
鐒惰岋紝涓鏃︿竴涓嚎绋嬭闃诲锛屼笉瑕佺揣鏈夊闀挎椂闂撮樆濉烇紝娌℃湁鎸佺画鐨勬垚鏈
娴佽鐨勬柟寮忔壘鍒版ц兘闂鏄墫鏋愩
涓嶈繃锛屾垜杩欐牱鍋氫簡寰堝锛屾槸杩欐牱鐨勶細
涓婚鍙栧喅浜庤澶歠actor锛屼絾鍦ㄤ富瑕佸熀浜庝袱鐐癸紝鍦ㄥ畠鍙互涓柇涓涓嚎绋嬫搷浣滅郴缁熷彧鑳藉垎閰嶅鐞嗐
濡傛灉浣犵殑绾跨▼锛屾棤璁哄浣曚笌纭欢浜や簰锛岄偅涔堣繖缁欎汉鐨勬搷浣滅郴缁熸湁鏈轰細涓柇绾跨▼鍜屽叾浠栧湴鏂圭殑鍒嗛厤澶勭悊锛屼富瑕佹槸鍩轰簬杩欐牱鐨勫亣璁剧‖浠朵氦浜掑彂鐢熷湪浣犵殑渚嬪瓙涓紝浣'iostream搴擄紝骞朵笌纭欢浜や簰銆
濡傛灉浣犵殑寰幆娌℃湁杩欎釜閭d箞瀹冩渶鏈夊皢杩100锛呯殑CPU銆
浣跨敤锛堟枃浠跺拰濂楁帴瀛楋級鐨処O CPU鐨勭瓑寰
浣跨敤鍨傜洿绾跨▼妯″瀷鏉ュ噺灏戜笂涓嬫枃鍒囨崲锛屽鏋滃彲鑳界殑璇
浣跨敤閿佸畾鏇村皯鐨勬暟鎹粨鏋
浣跨敤鍒嗘瀽宸ュ叿锛屽鐨刅Tune锛屾壘鍑虹儹鐐癸紝骞舵彁鍑轰紭鍖
姝e浜轰滑鎵璇寸殑锛屾纭殑鏂瑰紡鏉ュ悓姝ョ敓浜ц呭拰绾跨▼涔嬮棿鐨勬墜鏂皢鏄竴涓潯浠跺彉閲忋傚綋鍒剁墖浜烘兂娣诲姞鍒伴槦鍒椾腑锛屽畠閿佸畾鐨勬潯浠跺彉閲忥紝娣诲姞骞堕氱煡鏈嶅姟鍛樼殑鏉′欢鍙橀噺銆傛潯浠跺彉閲忕殑绛夊緟锛屽綋琚氱煡锛屼粠闃熷垪涓紝鐒跺悗鍐嶉攣瀹氥傛垜涓汉浣跨敤boost ::杩涚▼闂村浜庤繖浜涳紝浣嗗畠鍙互鍦ㄤ竴涓浉褰撶畝鍗曠殑鍏朵粬鐨凙PI鏉ュ畬鎴愪簡銆
姝ゅ锛屾湁涓鐐硅璁颁綇鐨勬槸锛岃櫧鐒跺湪姒傚康涓婃瘡涓嚎绋嬭繍琛岄槦鍒楃殑涓绔屽凡锛屽ぇ澶氭暟鍥句功棣嗕负O锛1锛count()鏂规硶锛屽畠浠湁鍙橀噺鏉ヨ建杩圭殑鏁伴噺锛岃繖鏄綍瑙佺殑锛岄毦浠ヨ瘖鏂苟鍙戦棶棰樼殑鏈轰細銆
濡傛灉浣犳鍦ㄥ鎵句竴绉嶆柟寮忔潵鍑忓皯绾跨▼鐨勶紙鏄殑锛屾垜鐭ラ亾杩欐槸浣犵殑鐪熸鐨勯棶棰橈級...濂斤紝杩欏惉璧锋潵鍍忓畠瀹為檯涓婃槸鍦ㄥ仛浠涔堝畠搴旇鍒扮幇鍦紝浣嗘暟鎹鐞嗘槸鏄傝吹鐨勩傚鏋滀綘鍙互鍒嗘瀽瀹冨湪鍋氫粈涔堬紝鏈夊彲鑳芥槸浼樺寲鐨勬満浼氥
濡傛灉浣犳兂鑱槑鎵兼潃鐢熶骇鑰呯嚎绋...瀹冩槸涓涓涓鐐圭殑宸ヤ綔锛屼絾浣犲彲浠ユ湁鐢熶骇鑰呯嚎绋嬪皢椤圭洰娣诲姞鍒伴槦鍒椾腑锛岀洿鍒板畠杈惧埌涓瀹氱殑闃堝硷紙渚嬪10鐒跺悗绛夊緟鍦ㄤ笉鍚岀殑鏉′欢鍙橀噺锛屽綋瓒冲澶氱殑鏁版嵁锛岃繖鎺掗槦鐨勪汉鏁板皢浣庝簬闃堝硷紙姣斿璇5鍒欓氱煡杩欎釜绗簩涓潯浠跺彉閲忥紝濡傛灉璇ョ郴缁熺殑鎵鏈夐儴鍒嗛兘鍙懆鍥村揩閫熺Щ鍔ㄤ腑鐨勬暟鎹紝閭d箞杩欏彲鑳借繕鏄緢澶氱殑CPU锛屼絾瀹冧細姣旇緝鍧囧寑鍦板垎甯冨湪浠栦滑涔嬩腑锛岃繖鏄湪杩欎竴鐐逛笂锛屾搷浣滅郴缁熷簲璐熻矗璁╁叾浠栦笉鐩稿叧鐨勮繘绋嬪緱鍒颁粬浠崥瑙堜細锛圛SH锛変唤棰濈殑CPU銆
鏈枃鏍囬 锛氭湁鍝簺甯歌鍘熷洜CPU鍗犵敤鐜囪繃楂橈紵
鏈枃鍦板潃 锛欳odeGo.net/417041/
Copyright 漏 2014 CodeGo.netCPU占用太高什么情况_百度知道
CPU占用太高什么情况
提问者采纳
  2。处理方式:  1,当你右键点击一个目录或一个文件;。  6。经常性更新升级杀毒软件和防火墙,重启,当快捷菜单显示的时候:基本上没有合理的处理方式,收到端口445上的连接请求时、金山,或者某个用户独占太多系统资源:用可靠的杀毒软件彻底清理系统内存和本地硬盘,察看有无异常启动的程序、木马造成  大量的蠕虫病毒在系统内部迅速复制:尤其是显卡驱动特别要注意,服务器的响应能力可能会受到影响。svchost.exe进程的数目就上升到了4个及4个以上,升级你的硬件配备、防杀毒软件造成故障  由于新版的KV、版本。主要是网卡;启动:  任何文件的拷贝操作在那个时间将有可能停止相应  网络连接速度将显著性的降低  所有的流输入&#47。  8。当负荷过重的时候.exe进程的数目为2个,而在WindowsXP中svchost。  要解决此问题,无疑增大了系统负担、查看网络连接、插件,造成CPU占用资源率据高不下、驱动没有经过认证.exe不单单只出现在WindowsXP中,在打开的窗口中键入下列数值并保存退出:  当你在资源管理器里面右键点击一个文件或目录的时候、看看是不是WindowsXP使用鼠标右键引起CPU占用100%  在资源管理器里面,并且打开系统设置软件,在使用NT内核的Windows系统中都会有输出操作例如使用WindowsMediaPlayer听音乐将有可能是音乐失真成因;msconfig-&gt,加强防毒意识、瑞星都加入了对网页。然后双击该值。  7,你将有可能出现下面所列问题。  5.exe是WindowsXP系统的一个核心进程.exe的存在。  4。处理方式、病毒、开始-&gt。  9,掌握正确的防杀毒知识,并且严格核对型号。  svchost、控制面板—管理工具—服务—RISINGREALTIMEMONITORSERVICE点鼠标右键,关闭不必要的启动项,者,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。一般在Windows2000中svchost:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver]分支、查看网络连接  当安装了WindowsXP的计算机做服务器的时候。你要确定合适的MaxWorkItems设置以提高系统响应能力,我们可以通过修改注册表来解决,造成了难以发现的故障原因,CPU占用率可能过高;运行-&gt。如果设置的值不正确,改为手动、查看“svchost”进程,造成CPU资源占用100%  大量的测试版的驱动在网上泛滥、邮件的随机监控,建议使用微软认证的或由官方发布的驱动,这是因为在工作项的数目和响应能力之间存在固有的权衡关系;,它将分配内存和少量地调配CPU资源来为这些连接提供服务。  3,尽量使用最少的监控服务吧;。解决办法,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平CPU占用率高的几种可能与解决办法
其他类似问题
如果你在其他目录下发现Svchost,当问题出来时,由它调用相应服务的动态链接库并加上相应参数来启动服务。一般在Windows 2000中Svchost、把网卡,本文将从多个角度给你全方面的解析;svc,加强防毒意识,其中一些会把可执行程序指向Microsoft&#92,比如震荡波病毒、网络连接导致CPU使用率占用100% 查看网络连接,请指定您的主机的文件所在目录、个人隐私的即时监空功能,可以停止IIS:cmd: 安装“一流信息监控拦截系统”。 2。解决办法.然后双击该值.exe文件就可以发现异常情况,再启动IIS:tasklist &#47,而在Windows XP中Svchost,但是最好是一个软件装完,然后在命令行模式中输入。 解决办法,IIS被死锁了.exe程序。接着。总而言之、木马造成,先用几天.exe的服务出现异常的话通过搜索Svchost、声卡卸载,关闭不必要的启动项;SYSTEM&#92,看看问题是否再次出现.exe的存在、常用软件,注意,系统将分配内存和少量CPU资源来为这些连接提供服务,奇怪的是。但由于Svchost,最有问题的往往是计数器类的ACCESS文件: 有一个或多个ACCESS数据库在多次读写过程中损坏。Svchost,全部的CPU时间都消耗在DLLHOST中。当你的Windows2000&#47, 管理员在这种情况下,那很可能就是中毒了,问题又再次出现了.exe程序的话,会非常缓慢;CurrentVersion&#92,“首席文件检查官IIS健康检查官”会在logblock。如果使用的是Windows 2000系统则把前面的“tasklist &#47:“tlist -s”即可。 3. 6。 上面简单的介绍了Svchost,检查logblock。系统列出服务列表.exe进程的特殊性.exe进程的数目就上升到了4个及4个以上.exe占用CPU100%,经过仔细的查找后,这个往往是中毒的表现:logblock.exe不单单只出现在Windows XP中,您肯定可以找到这个让您操心了一段时间的文件的,ASP线程处于BLOCK状态:使用最新的杀毒软件在DOS模式下进行杀毒,就设置为&Windows&#92。关闭该杀毒软件是解决得最直接办法。 5,当负荷过重;Windows NT&#92.exe Windows中的系统服务是以动态链接库(DLL)的形式实现的、显卡,找到HKEY—LOCAL—MACHNE\1024&quot、开始->运行->msconfig->启动;xp作为服务器时,可以发现是DLLHOST.exe,设置。 svchost。 还有一种确认Svchost.exe的键值是在“HKEY_LOCAL_MACHINE&#92,收到来自端口445上的连接请求后。 如何才能辨别哪些是正常的Svchost.exe进程的数目为2个。出现问题再接着装。 直接原因。 大量的蠕虫病毒在系统内部迅速复制,而哪些是病毒进程呢,很多人都会经常遇到这样的问题:“C.exe是否中毒的方法是在任务管理器中察看进程的执行路径、当然也要装驱动。 如果你怀疑计算机有可能被病毒感染,而且CPU消耗应该是上下起伏的.MDB”,文件名为。经常性更新升级杀毒软件和防火墙,再装上其他软件。比如,掌握正确的防杀毒知识, 启用”查找死锁模块”,微软的MDAC系统在写入这个损坏的ACCESS文件时。 1.exe是Windows XP系统的一个核心进程.htm中记录下最后写入的ACCESS文件的;Svchost”。 出现CPU占用率100% 的故障经常是因为病毒木马造成的,再启动IIS、邮件.exe,只好重新启动IIS服务,但可能过了一段时间后。我们相信。通过察看Svchost,就会出现上述情况,造成CPU占用资源率据高不下,造成了难以发现的故障原因.exe进程:”**COUNT;:在“运行”中输入;CurrentControlSet&#92,并不是病毒进程,然后重新安装一下驱动;System32”目录下的Svchost,Svchost。论坛上有不少朋友都遇到过svchost,重新启动IIS服务后一切正常、杀毒软件CPU使用率占用100% 现在的杀毒软件一般都加入了.EXE消耗了所有的CPU空闲时间: --wblockdir=d;Services\;maxworkitems&quot:&#92。 7! 特征,使它更容易成为了一些病毒木马的宿主。以Windows XP为例;的DWORD值:\Software&#92,Svchost。用几天看一下:在玩游戏的时候.exe组: --wblock=yes 监控的目录.exe进程的相关情况.htm 停止IIS、驱动没有经过认证;、查看“svchost”进程 Svchost,CPU会突然一直处100%的水平,如果小于512,就设置为256,所以病毒也会千方百计的入侵Stest 监控生成的日志的文件保存位置在安装目录的log目录中,例如.ASP”。 4,所以要使用第三方的进程察看工具。要解决这个问题可以通过修改注册表来解决;,再启动“首席文件检查官IIS健康检查官”:服务器正常CPU消耗应该在75%以下。 微软还为我们提供了一种察看系统正在运行在Svchost。主要是网卡,对电脑进行全机扫描 。但是由于在Windows系统自带的任务管理器不能察看进程路径。一般只会找到一个在.exe列表中的服务的方法.exe进程的执行路径可以确认是否中毒,重启,如果你的电脑有512以上内存,若不会出现这种问题,”**COUNT,打开注册表解决CPU资源占用100%的八大方法 相信你的一定遇到过电脑动弹不得的时候,造成CPU资源占用100%,出现这种问题的服务器。查看任务管理器。 8.exe是一个系统的核心进程。 大量的测试版的驱动在网上泛滥。应该首先更新病毒库;svc”命令替换为? Slanmanserver,每个键值表示一个独立的Svchost,在使用NT内核的Windows系统中都会有Svchost、病毒;、重装系统。正是因为它的特殊性和重要性,检查是否存在间谍软件,在使用反间谍软件Ad—Aware,对网页,这样无疑会加大系统的负担.htm所记录的最后的十个文件:CPU占用率100%改如何解决,或许是只能眼看鼠标滑动而不能进行任何操作的时候,在右面新建一个名为&quot,希望阅读完本文希望在今后你遇到问题的时候能够带给你一些帮助,结果其它线程只能等待,使用其中的“首席文件检查官IIS健康检查官”软件,可以先把最后十个文件或有所怀疑的文件删除到回收站中。 过了一段时间后,例如CPU会再次一直处100%的水平,而且不会下降
来自团队:
为您推荐:
其他1条回答
是用的程序多了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 什么叫cpu占用过高 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信