关于多线程如何占满cpu的问题!

我想,既然大家都是看多线程的特殊用法了,想必应该对多线程有了一定的了解,接下来,我给大家解释一下如何用单进程多线程占满cpu吧。

首先,告诉大家一个常识:

单核环境下,空死循环会导致100%的CPU占有率。双核环境下,CPU总占有率大约为50%,四核是25%左右,那么,接下来就是创建4个线程将cpu占满即可!

代码如下:(刚看的关于C++11标准中的thread库类。。)

#include <iostream>
#include <thread>
#include <mutex>
using namespace std;

void rere(){
while (1)
{
}
}

int main(){
    int a;

    thread t1(rere);
    thread t2(rere);
    thread t3(rere);
    thread t4(rere);
    t1.join();
    t2.join();
    std::cout << "Main Thread!" << endl;
    return 0;
}

测试结果:

算了,不好截图。。

今天收获不少,哈哈哈哈哈。

时间: 2025-01-18 15:56:23

关于多线程如何占满cpu的问题!的相关文章

IOCP大并发svchost.exe(NlaSvc服务)占满CPU问题分析

症状: 使用IOCP开发的SSLSpider(SSL证书扫描服务)运行一会后(4000并发),系统的一个svchost.exe一直满一个CPU内核(共4核). 分析: 此进程运行了4个服务: 停止WinRM.Dnscache都没用,停止NlaSvc超时了,应该是这货在作怪,Google... 真的是它! 「别人遇到的,貌似没找到解决方法 http://www.tomshardware.com/forum/302313-28-usage-minutes-turned-urgent」 暂时先停掉这个

网站CPU占满,微信经常SSL不能建立的错误排查

微信SSL经常建立失败的问题排查 问题描述 及应急方案 问题描述: 使用微信访问时,一段时间过后总会提示SSL连接无法建立[程序中需要获取用OpenId,因此有调用企业微信Api的请求] 应急方案:在Global.asax 文件中加入如下代码让服务器不验证证书,但是感觉用途不大,再重启了应用程序池后表现正常,但是一段时间后又出现ssl建立失败的情况. protected void Application_Start() { ServicePointManager.SecurityProtocol

Mybatis 并发执行导致cpu占满的问题

最近线上服务经常 出现cpu达到100%的问题,发现都是执行oracle操作的方法就没有返回.经过排查,最后定位到cpu消耗在以下方法 System.Collections.Generic.Dictionary`2<system.type,system.boolean>.FindEntry (...)System.Collections.Generic.Dictionary`2<system.__canon,system.boolean>.TryGetValue (...)MyBa

为什么python的多线程不能利用多核CPU?

为什么python的多线程不能利用多核CPU,但是咱们在写代码的时候,多线程的确是在并发,而且还比单线程快. 一.python的多线程不能利用多核CPU? 原因: 因为GIL,python只有一个GIL,运行python时,就要拿到这个锁才能执行,在遇到I/O 操作时会释放这把锁. 如果是纯计算的程序,没有 I/O 操作,解释器会每隔100次操作就释放这把锁,让别的线程有机会 执行(这个次数可以通sys.setcheckinterval 来调整)同一时间只会有一个获得GIL线程在跑,其他线程都处

让HorizontalScrollView里某个控件占满整个屏幕

要将这个控件写到一个布局中, 然后在代码中设定宽等属性 DisplayMetrics dm = new DisplayMetrics(); //获取屏幕信息 getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; int screenHeigh = dm.heightPixels; 如果是item中的, 在getview中加入 LayoutParams params = new Li

Fragment不占满父控件

============问题描述============ 图片如上,为什么fragment不占满整个content啊? 代码如下: Action.java: ft.replace(R.id.content, new NoteFragment()); fragment.java: public class AllQuestionFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater

linux系统inode占满故障处理

Linux系统inode占满故障处理 众所周知,文件系统中inode编码是指向磁盘block的唯一编号,若服务器遭入侵或日志文件将磁盘inode资源编号耗尽,新数据无法获取inode编号导致无法存储.举例说明:在磁盘中/boot独立分区中查看现有inode资源并通过for循环创建大量文件占用耗尽inode编号,导致磁盘无法写入内容,最后进行处理故障. [[email protected] ~]#  df -i /boot/                                 #查看i

Linux磁盘空间占满故障处理

Linux磁盘占满 当磁盘被某大文件占满时,而且此大文件正在被某些进程读写并占用着,此时无法删除和置空此文件,只能先找到占用大文件的进程,然后终止进程,最后置空此文件. 实例如下:在/boot分区中创建大文件test,将boot分区的磁盘占满,通过另外一个终端进入主机,vim编辑此test文件,模拟大文件被vim进程占用,然后删除和清空此test文件. 终端1 [[email protected] ~]# df -h  /boot/                                

MySQL ibdata1撑爆占满磁盘空间

MySQL主从由于ibdata1占满磁盘空间-->主从失效 因为设置了innodb_file_per_table = 1,ibdata1依旧撑爆占满磁盘空间 主从断的时候,IO线程在连接,SQL线程断掉. 想要了解为何ibdata1增长那么大? 个人这么理解的:主从断掉,IO线程在,获取到了事件事物的更新,而SQL线程断掉,导致产生大量的undo,撑爆了ibdata1. 最终验证发现,确实是undo占满了ibdata1. 下载一个小工具:py_innodb_page_info.py  本人网盘下