dummy_worker C++ 预占用部分比例cpu资源,人为创造cpu资源紧张
背景
有时候为了C++测试程序在cpu资源紧张情况下是否正常,需要人为创造cpu资源紧张
编译方法
g++ -o dummp_worker dummp_worker.cpp -std=c++11 -pthread
使用方法
./dummp_worker 4 0.2
占用4个cpu核的20%比例的cpu资源
源码
// dummp_worker.cpp
#include <cassert>
#include <chrono>
#include <iostream>
#include <thread>
#include <vector>using namespace std;
using namespace chrono;void busy_wait(size_t nanosec) {auto t0 = high_resolution_clock::now();while (duration_cast<nanoseconds>(high_resolution_clock::now() - t0).count() < nanosec) {}
}[[noreturn]] void work(float percentage) {assert(percentage >= 0.f && percentage <= 1.f);constexpr float period = 1000000.0f;while (true) {// busy_wait(900000);// this_thread::sleep_for(100000ns);busy_wait(static_cast<size_t>(period * percentage));this_thread::sleep_for(nanoseconds(static_cast<size_t>(period * (1.f - percentage))));}
}int main(int argc, char* argv[]) {if (argc < 3) {cout << "Args: worker_num occupation_rate.\n";return 0;}const int num = stoi(argv[1]);const float percentage = stof(argv[2]);if (num < 1) {cout << "Error: num of workers less than 1.\n";return 0;}if (percentage < 0.f || percentage > 1.f) {cout << "Error: occupation rate should be between [0.0, 1.0].\n";return 0;}cout << "num of workers: " << num << "\n"<< "occupation rate: " << percentage << "\n";// do the workvector<thread> tds;for (size_t i = 0; i < num; ++i) {tds.emplace_back(work, percentage);}tds[0].join();
}
参考
https://github.com/mightbxg/DummyWorker
相关文章:
dummy_worker C++ 预占用部分比例cpu资源,人为创造cpu资源紧张
背景 有时候为了C测试程序在cpu资源紧张情况下是否正常,需要人为创造cpu资源紧张 编译方法 g -o dummp_worker dummp_worker.cpp -stdc11 -pthread 使用方法 ./dummp_worker 4 0.2 占用4个cpu核的20%比例的cpu资源 源码 // dummp_worker.cpp #include <c…...
电脑缺失opencl.dll怎么办,轻松解决opencl.dll的多种方法分享
当我们在操作电脑过程中遇到系统提示“由于找不到opencl.dll,无法继续执行代码”,这个错误会导致软件应用无法正常运行。OpenCL.dll作为一个与Open Computing Language(开放计算语言)相关的动态链接库文件,它在执行需要…...
el-select 点击按钮滚动到选择框顶部
主要代码是在visibleChange 在这个 popper 里面找到 .el-select-dropdown__list let popper ref.$refs.popper const ref this.$refs.select let dom popper.querySelector(.el-select-dropdown__list) setTimeout(() > { dom.scrollIntoView() }, 800) <templat…...
vue 钩子函数updated什么时候触发
触发时机 updated是Vue生命周期钩子函数之一,在组件的数据变化导致虚拟DOM重新渲染并应用到实际DOM之后触发。具体来说,updated会在以下几种情况下被触发: 初始渲染完成后:当组件首次渲染完成并将虚拟DOM渲染到实际DOM之后&#…...
消息队列使用常见问题
一、消息丢失的时机? 生产端消息丢失 问题:因为网络异常导致消息发送失败,此时可能会产生消息丢失的情况,重试后可能产生消息重复生产的情况。 解决:超时重试,并在消费端保证幂等性。 消息队列中消息丢失 …...
常用SQL命令
应用经常需要处理用户的数据,并将用户的数据保存到指定位置,数据库是常用的数据存储工具,数据库是结构化信息或数据的有序集合,几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据,进行数据访问控制&…...
【neteq】tgcall的调用、neteq的创建及接收侧ReceiveStatisticsImpl统计
G:\CDN\P2P-DEV\Libraries\tg_owt\src\call\call.cc基本是按照原生webrtc的来的:G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\group\GroupInstanceCustomImpl.cpptg对neteq的使用 worker 线程创建call Call的config需要neteqfactory Call::CreateAu…...
使用Python读取las点云,写入las点云,无损坐标精度
目录 1 为什么要写这个博文2 提出一些关键问题3 给出全部代码安装依赖源码(laspy v2.x) 1 为什么要写这个博文 搜索使用python读写las点云数据,可以找到很多结果。但是! 有些只是简单的demo,且没有发现/说明可能遇到的…...
python开发二
python开发二 requests请求模块 requests 是一个常用的 Python 第三方库,用于发送 HTTP 请求。它提供了简洁且易于使用的接口,使得与 Web 服务进行交互变得非常方便。 发送 GET 请求并获取响应 import requestsresponse requests.get("https:/…...
部署JVS服务出现上传文件不可用,问题原因排查。
事情的起因是这样的,部门经理让我部署一下JVS资源共享框架,项目的地址是在这里 项目资源地址 各位小伙伴们做好了,我要开始发车了,全新的“裂开之旅” 简单展示一下如何部署JVS文档 直达链接 撕裂要开始了 本来服务启动的好好…...
机器视觉检测为什么是工业生产的刚需?
机器视觉检测在工业生产中被视为刚需,主要是因为它具备以下几个关键优势: 提高精度与效率:机器视觉系统可以进行高速、高精度的检测。这对于保证产品质量、减少废品非常关键。例如,在生产线上,机器视觉可以迅速识别产品…...
Adobe系列软件安装
双击解压 先运行Creative_Cloud_Set_Up.exe。 完毕后,运行AdobeGenP.exe 先Path,选路径,如 C:\Program Files\Adobe 后Search 最后Patch。 关闭软件,修图!...
【FX110】2024外汇市场中交易量最大的货币对是哪个?
作为最大、最流动的金融市场之一,外汇市场每天的交易量高达几万亿美元,涉及到数百种货币。不同货币对的交易活跃程度并不一样,交易者需要根据货币对各自的特点去进行交易。 全年外汇市场中涉及美元的外汇交易超过50%! 实际上&…...
leetcode尊享面试100题(549二叉树最长连续序列||,python)
题目不长,就是分析时间太久了。 思路使用dfs深度遍历,先想好这个函数返回什么,题目给出路径可以是子-父-子的路径,那么1-2-3可以,3-2-1也可以,那么考虑dfs返回两个值,对于当前节点node来说&…...
C#面试题: 寻找中间值
给定一个数组,在区间内从左到右查找中间值,每次查找最小值与最大值区间内的中间值,且这个区间元素数量不小于3。 例如 1.给定数组float[] data { 1, 2.3f, 4, 5.75f, 8.125f, 10.5f, 13, 15, 20 } 输出:10.5、5.75、4、2.3、8…...
987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
解法: 一棵二叉树是完全二叉树的条件是: 对于任意一个结点,如果它有右子树而没有左子树,则这棵树不是完全二叉树。 如果一个结点有左子树但是没有右子树,则这个结点之后的所有结点都必须是叶子结点。 如果满足以上条…...
13:HAL---SPI
目录 一:SPL通信 1:简历 2:硬件电路 3:移动数据图 4:SPI时序基本单元 A : 开/ 终条件 B:SPI时序基本单元 A:模式0 B:模式1 C:模式2 D:模式3 C:SPl时序 A:发送指令 B: 指定地址写 C:指定地址读 5:NSS(CS) 6:时钟 二: W25Q64 1:简历 2…...
微服务---gateway网关
目录 gateway作用 gateway使用 添加依赖 配置yml文件 自定义过滤器 nacos上的gateway的配置文件 我们现在知道了通过nacos注册服务,通过feign实现服务间接口的调用,那对于不同权限的用户访问同一个接口,我们怎么知道他是否具有访问的权…...
HTML4(二)
文章目录 1 开发者文档2 基本标签2.1 排版标签2.2 语义化标签2.3 行内元素与块级元素2.4 文本标签2.5 常用标签补充 3 图片标签4 超链接标签4.1 跳转页面4.2 跳转文件4.3 跳转锚点4.4 唤起指定应用 5 列表5.1 有序列表5.2 无序列表5.3 自定义列表 6 表格6.1 基本结构6.2 表格标…...
SpringBoot 扩展篇:ConfigFileApplicationListener源码解析
SpringBoot 扩展篇:ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…...
Windows 11三指拖拽功能完全配置指南:从驱动安装到手势优化
Windows 11三指拖拽功能完全配置指南:从驱动安装到手势优化 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersD…...
零代码部署:用Ollama快速搭建TranslateGemma-4B翻译服务
零代码部署:用Ollama快速搭建TranslateGemma-4B翻译服务 1. 为什么选择TranslateGemma-4B Google推出的TranslateGemma-4B是目前最先进的轻量级开源翻译模型之一。这个基于Gemma 3架构的模型专为多语言翻译任务设计,支持55种语言的互译,特别…...
WorkshopDL:跨平台资源获取的开源工具解决方案
WorkshopDL:跨平台资源获取的开源工具解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏模组生态中,跨平台资源访问与高效下载一直是技术爱…...
VisualGGPK2:《流放之路》MOD制作的高效解决方案
VisualGGPK2:《流放之路》MOD制作的高效解决方案 【免费下载链接】VisualGGPK2 Library for Content.ggpk of PathOfExile (Rewrite of libggpk) 项目地址: https://gitcode.com/gh_mirrors/vi/VisualGGPK2 你是否曾因复杂的资源提取流程而放弃MOD创作&#…...
Paperxie AI 毕业论文写作,助力大学生高效搞定初稿
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 在本科毕业季的朋友圈里,总能刷到这样的动态:凌晨三点的台灯下,对着空白文档发…...
Phi-3-mini-128k-instruct Chainlit集成:支持Markdown渲染、LaTeX公式与代码高亮
Phi-3-mini-128k-instruct Chainlit集成:支持Markdown渲染、LaTeX公式与代码高亮 1. 模型简介 Phi-3-Mini-128K-Instruct是一个38亿参数的轻量级开放模型,属于Phi-3系列中的高性能版本。这个模型经过精心训练,特别适合需要长文本理解和复杂…...
Android App集成AI对话功能:从基础实现到性能优化与安全实践
Android App集成AI对话功能:从基础实现到性能优化与安全实践 在移动应用开发领域,AI对话功能的集成已经从"锦上添花"变成了"必备能力"。对于中高级Android开发者而言,仅仅实现基础功能已经不够——用户期待的是流畅、安…...
药物发现必备:RDKit分子指纹在虚拟筛选中的7种高级用法
药物发现必备:RDKit分子指纹在虚拟筛选中的7种高级用法 在当今药物研发领域,虚拟筛选已成为加速药物发现流程的关键技术。面对海量化合物库,如何高效准确地识别潜在活性分子?RDKit分子指纹技术提供了强有力的解决方案。不同于基础…...
YOLO12在工业质检场景:PCB缺陷识别与小目标检测实战案例
YOLO12在工业质检场景:PCB缺陷识别与小目标检测实战案例 1. 引言:当AI质检员遇上电路板 想象一下,你是一家电子厂的质检主管。每天,成千上万块印刷电路板(PCB)从生产线上下来,每一块都需要经过…...
MedGemma X-Ray 场景应用:基层医生的AI辅助阅片实战指南
MedGemma X-Ray 场景应用:基层医生的AI辅助阅片实战指南 1. 基层医疗的痛点与AI解决方案 在基层医疗机构,放射科医生常常面临两大挑战:一是阅片经验相对不足,二是工作负荷过重。一张胸部X光片可能包含数十个需要观察的关键点&am…...
