怎么降低代码运行时的cpu占用率 如题怎么降低代码运行时cpu的占用率,有什么方法呢? 顺便问下另一个问题,多线程是不是可以降低cpu的占用率? 还一个问题就是c和c++中代码的执行都是一行一行的顺序执行,怎么就能同时执行两行或者以上的代码或者函数,这个是不是就叫多线程? 我对多线程一点都不了解,编程功底也不咋样的,请大家不吝赐教。灰常感谢! 分享到: ------解决方案-------------------- 加sleep就可以降低占用率。 一般用多线程都是为了提高cpu占用率 ------解决方案-------------------- 如果不开启子线程,那么你的程序就只有一个主线程,程序的执行自然就是一行一行的按顺序来。如果开了子线程,那么这个子线程的运行就不会受阻与主线程。比如你需要一个循环while(1),来不停的做某一件事,如果在主线程中执行这个的话就会不断占用CPU,从而造成你的程序假死(无响应),如果将循环放到一个子线程中,就不会有这个假死的现象了,CPU的占用率也会明显下降。多线程也不是绝对意义上的“同时”执行,而是根据时间片在轮询执行,只不过CPU轮换速度很快,一般觉察不到而已 ------解决方案-------------------- 如果你的代码是一个大大的循环,而且是一个长久不停的循环,那么用多线程,可以降低你的程序的cpu占用率。 执行两行或者两行以上代码,多线程和并行处理编程是你很好的选择。 ------解决方案-------------------- 开线程while(1)会降低CPU的占用率?开玩笑的把? 降低CPU的占用率,基本就是不要用while(1)空转,用消息,通知等,比如单独一个线程接收socket数据,不要用异步方式不停判断返回值,而是使用同步方式 ------解决方案-------------------- CPU用来执行代码,你要降低CPU占用率,不就是要让程序跑的更慢么? 问下你领导到底是要干什么?如果是绝得这个进程不应该和其它的抢cpu,那么降低这个进程的优先级。 ------解决方案-------------------- //循环向a函数每次发送200个字节长度(这个是固定的)的buffer,
//a函数中需要将循环传进来的buffer,组成240字节(也是固定的)的新buffer进行处理, //在处理的时候每次从新buffer中取两个字节打印 #include #include #include #include #include #include //Log{ #define MAXLOGSIZE 20000000 #define MAXLINSIZE 16000 #include #include #include char logfilename1[]='MyLog1.log'; char logfilename2[]='MyLog2.log'; static char logstr[MAXLINSIZE+1]; char datestr[16]; char timestr[16]; char mss[4]; CRITICAL_SECTION cs_log; FILE *flog; void Lock(CRITICAL_SECTION *l) { EnterCriticalSection(l); } void Unlock(CRITICAL_SECTION *l) { LeaveCriticalSection(l); } void LogV(const char *pszFmt,va_list argp) { struct tm *now; struct timeb tb; if (NULL==pszFmt ------解决方案-------------------- 0==pszFmt[0]) return; _vsnprintf(logstr,MAXLINSIZE,pszFmt,argp); ftime(&tb); now=localtime(&tb.time); sprintf(datestr,'%04d-%02d-%02d',now->tm_year+1900,now->tm_mon+1,now->tm_mday); sprintf(timestr,'%02d:%02d:%02d',now->tm_hour ,now->tm_min ,now->tm_sec ); sprintf(mss,'%03d',tb.millitm); |
|