当前位置: 首页 > article >正文

C/C++中线程基本概念与创建详解

一、线程基本概念线程是在进程中产生的一个执行单元是CPU调度和分配的最小单元其在同一个进程中与其他线程并行运行他们可以共享进程内的资源比如内存、地址空间、打开的文件等等。线程是CPU调度和分派的基本单位进程是分配资源的基本单位进程正在运行的程序是处于执行期的程序以及它所管理的资源如打开的文件、挂起的信号、进程状态、地址空间等等的总称从操作系统核心角度来说进程是操作系统调度除CPU时间片外进行的资源分配和保护的基本单位它有一个独立的虚拟地址空间用来容纳进程映像(如与进程关联的程序与数据)并以进程为单位对各种资源实施保护如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)计算机有很多资源组成比如CPU、内存、磁盘、鼠标、键盘等就像一个工厂由电力系统、作业车间、仓库、管理办公室和工人组成假定工厂的电力有限一次只能供给一个或少量几个车间使用。也就是说一部分车间开工的时候其他车间都必须停工。背后的含义就是单个CPU一次只能运行一个任务多个CPU能够运行少量任务。线程就好比车间里的工人。一个进程可以包括多个线程他们协同完成某一个任务。二、为什么使用多线程1.避免阻塞大家知道单个进程只有一个主线程当主线程阻塞的时候整个进程也就阻塞了无法再去做其它的一些功能了。2.避免CPU空转应用程序经常会涉及到RPC数据库访问磁盘IO等操作这些操作的速度比CPU慢很多而在等待这些响应时CPU却不能去处理新的请求导致这种单线程的应用程序性能很差。3.提升效率一个进程要独立拥有4GB的虚拟地址空间而多个线程可以共享同一地址空间线程的切换比进程的切换要快得多。上下文切换三、创建线程函数1.CreateThreadCreateThread是一种微软在Windows API中提供了建立新的线程的函数该函数在主线程的基础上创建一个新线程。线程终止运行后线程对象仍然在系统中必须通过CloseHandle函数来关闭该线程对象。12345678HANDLECreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,//SDSIZE_TdwStackSize,//initialstacksizeLPTHREAD_START_ROUTINE lpStartAddress,//threadfunctionLPVOIDlpParameter,//threadargumentDWORDdwCreationFlags,//creationoptionLPDWORDlpThreadId//threadidentifier)第一个参数 lpThreadAttributes 表示线程内核对象的安全属性一般传入NULL表示使用默认设置。第二个参数 dwStackSize 表示线程栈空间大小。传入0表示使用默认大小1MB。第三个参数 lpStartAddress 表示新线程所执行的线程函数地址多个线程可以使用同一个函数地址。第四个参数 lpParameter 是传给线程函数的参数。第五个参数 dwCreationFlags 指定额外的标志来控制线程的创建为0表示线程创建之后立即就可以进行调度如果为CREATE_SUSPENDED则表示线程创建后暂停运行这样它就无法调度直到调用ResumeThread()。第六个参数 lpThreadId 将返回线程的ID号传入NULL表示不需要返回该线程ID号2._beginthreadex123456789unsignedlong_beginthreadex(void*security,// 安全属性 为NULL时表示默认安全性unsigned stack_size,// 线程的堆栈大小 一般默认为0unsigned(_stdcall *start_address)(void*),// 线程函数void*argilist,// 线程函数的参数unsigned initflag,// 新线程的初始状态0表示立即执行//CREATE_SUSPENDED表示创建之后挂起unsigned *threaddr// 用来接收线程ID);返回值 : // 成功返回新线程句柄 失败返回0__stdcall表示1.参数从右向左压入堆栈2.函数被调用者修改堆栈

相关文章:

C/C++中线程基本概念与创建详解

一、线程基本概念线程是在进程中产生的一个执行单元,是CPU调度和分配的最小单元,其在同一个进程中与其他线程并行运行,他们可以共享进程内的资源,比如内存、地址空间、打开的文件等等。线程是CPU调度和分派的基本单位,…...

如何免费解锁8大网盘全速下载:网盘直链下载助手终极指南

如何免费解锁8大网盘全速下载:网盘直链下载助手终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

F-RAM技术原理、优势与应用场景解析

1. F-RAM技术原理与核心特性解析铁电随机存取存储器(Ferroelectric Random Access Memory,简称F-RAM)是一种基于铁电材料极化特性的非易失性存储技术。与传统存储器相比,F-RAM在物理结构和工作原理上有着本质区别。1.1 铁电效应与…...

别再乱用res.send了!Express响应方法res.write、res.end、res.send、res.json的保姆级选择指南

Express响应方法深度解析:如何精准选择res.write、res.end、res.send和res.json 在Node.js开发中,Express框架的响应处理是每个开发者必须掌握的核心技能。面对不同的业务场景,如何选择合适的响应方法直接影响着应用的性能和开发效率。本文将…...

WarcraftHelper:魔兽争霸III终极性能增强与兼容性修复解决方案

WarcraftHelper:魔兽争霸III终极性能增强与兼容性修复解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是专为魔兽争…...

ARM浮动许可证管理实战与优化指南

1. ARM浮动许可证管理基础与核心概念在嵌入式开发领域,ARM工具链的许可证管理是每个技术团队必须掌握的技能。作为从业十余年的嵌入式系统架构师,我处理过各种复杂的许可证配置场景,今天将系统性地分享ARM浮动许可证服务器的实战经验。浮动许…...

自适应剪枝高斯过程优化高维鞍点搜索效率

1. 项目背景与核心挑战在复杂系统优化领域,鞍点搜索一直是计算密集型任务中的关键瓶颈。传统的高斯过程(Gaussian Process, GP)方法虽然能有效建模非线性响应面,但在高维参数空间中面临两大痛点:一是计算复杂度随样本量…...

ADLINK SBC35-ALN单板计算机:工业自动化与边缘计算新选择

1. ADLINK SBC35-ALN 3.5英寸单板计算机深度解析在工业自动化和嵌入式系统领域,ADLINK最新推出的SBC35-ALN 3.5英寸单板计算机引起了广泛关注。这款基于Intel Alder Lake-N架构的产品,凭借其紧凑尺寸和丰富接口,为边缘计算和专用设备开发提供…...

Nginx等保测评避坑指南:数据备份、冗余与‘不适用’项到底怎么判?

Nginx等保测评实战解析:数据备份、冗余设计与"不适用"项判定逻辑 在等保测评的实际操作中,Nginx作为反向代理和Web服务器的角色定位,常常让测评人员和安全顾问在"数据备份恢复"、"冗余设计"等关键项的判定上陷…...

Proxmox VE模板制作实战:将Ubuntu 22.04 Cloud-Init镜像打造成你的“黄金镜像”

Proxmox VE黄金镜像实战:从Ubuntu 22.04 Cloud-Init到企业级模板的深度优化 在虚拟化环境中,标准化镜像的管理效率直接决定了运维团队的生产力水平。想象一下这样的场景:凌晨三点收到业务扩容需求,你需要快速部署20台配置一致的Ub…...

OpenClaw智能路由插件:基于任务类型自动分配AI模型

1. 项目概述:一个让AI“各司其职”的智能路由插件最近在折腾一个叫OpenClaw的AI网关项目,它本身是个挺有意思的东西,能把各种大模型(比如Claude、GPT、本地跑的Llama)统一管理起来,通过一个入口&#xff08…...

基于Python与GPT的自动化股票报告生成系统实践

1. 项目概述:从零构建一个AI驱动的自动化股票报告生成器最近在捣鼓一个挺有意思的小项目,我把它叫做“AI股票报告生成器”。核心想法很简单:能不能让程序自动去抓取我关心的股票数据,然后扔给类似ChatGPT这样的AI模型,…...

SwiftLLM:专为LLM推理优化研究设计的极简高性能框架

1. SwiftLLM:为研究而生的极简高性能LLM推理引擎 如果你正在研究大语言模型(LLM)的推理优化,比如想尝试新的调度算法、改进注意力机制,或者验证某个内存管理的新点子,你可能会立刻想到 vLLM、LightLLM 这些…...

Arm Cortex-X925系统寄存器解析与优化实践

1. Arm Cortex-X925系统寄存器深度解析在Armv9架构的Cortex-X925高性能核心中,系统寄存器扮演着处理器控制中枢的角色。作为一位长期从事Arm架构开发的工程师,我经常需要深入理解这些寄存器的行为特性。今天我们就来重点剖析AFSR1_EL1和AMAIR_EL1这两个关…...

AI插件跨平台开发指南:一次编写,多平台分发实战

1. 项目概述:一个AI插件,一次编写,全平台分发如果你和我一样,最近在折腾各种AI开发工具,比如Claude Code、Cursor、Gemini CLI,那你肯定遇到过这个头疼的问题:为每个平台写插件,就像…...

告别C++!用Python给SolidWorks 2022写插件,5步搞定自定义菜单(附完整源码)

Python驱动SolidWorks二次开发:5步构建高效插件体系 在工业设计领域,SolidWorks长期占据着三维CAD软件的领导地位,但其传统的C/VB二次开发方式让许多现代开发者望而却步。当Python遇上SolidWorks,我们不仅获得了语法简洁的开发体验…...

苹果CMSv10高端定制版 附带采集插件

内容目录一、详细介绍安装部署建议二、效果展示1.部分代码2.效果图展示一、详细介绍 与官方区别就是去掉了官方更新远程代码,没有沿用官方的新界面,简单点就是安全基数升级了 运行目录设定为: public ,采集插件请在应用中启用##…...

批量更新不用游标:CASE WHEN + 集合操作,一行SQL搞定!

📌 今日关键词:批量更新、效率优化、CASE WHEN、集合操作、MySQL​技巧 大家好呀!我是数据库小学妹👋 今天上午我们学了​游标​——它能逐行处理数据,但在处理大量数据时容易“卡顿”。那有没有更简单、更高效的办法呢…...

Cursor编辑器AI补全增强插件:让代码助手更懂你的项目

1. 项目概述:一个为 Cursor 编辑器注入 AI 灵魂的插件如果你和我一样,日常开发重度依赖 Cursor 这款“AI 原生”的代码编辑器,那你肯定对它的 AI 自动补全(Autocomplete)功能又爱又恨。爱的是,它确实能根据…...

企业网盘,基于 .NET 技术开发,用于构建安全高效的文件云存储和云管理平台。

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 企业网盘,基于 .NET 技术开发,用于构建安全高效的文件云存储和云管理平台。 自动同步提供智能化的文件上传、下载及版本更替功能,实现便捷的文件云备份和云共享解决方…...

TensorRT-LLM与Triton部署AI编程助手实战

1. 基于TensorRT-LLM和Triton的AI编程助手部署指南在当今软件开发领域,AI编程助手正迅速成为开发者日常工作的标配工具。根据行业预测,到2025年,80%的产品开发生命周期将使用生成式AI进行代码编写。本文将手把手教你如何利用NVIDIA TensorRT-…...

Cosmos-Reason1-7B参数详解:Top-P=0.95在开放性物理问题中的平衡表现

Cosmos-Reason1-7B参数详解:Top-P0.95在开放性物理问题中的平衡表现 1. 引言 当你让一个AI模型去分析一张图片,判断“这个机器人手臂能安全地拿起那个玻璃杯吗?”,你期望的答案是什么?是一个简单的是或否&#xff0c…...

FISCO BCOS 跨链:WeCross 架构设计与网关开发

一、WeCross 是什么? WeCross 是微众银行区块链自研并开源的跨链协作平台,旨在解决 FISCO BCOS 与其他异构链(如 Hyperledger Fabric、国密链等)之间的互联互通问题-8。其核心定位是通用的区块链跨链互操作解决方案,支持合约跨链调用、跨链事务保障等功能-7。 目前 WeCr…...

数据科学家成长路线图:从零到一构建核心技能与项目实战

1. 项目概述:一份数据科学家的成长蓝图最近在GitHub上看到一个挺有意思的项目,叫“Data-Science-Roadmap”,作者是Moataz Elmesmary。这本质上是一份开源的学习路线图,旨在为想进入数据科学领域的人,或者已经在这个领域…...

基于若依前后端分离框架的CMS内容发布管理系统设计与实践

引言 在当今信息化时代,内容管理系统(CMS)已经成为企业、政府机构及各类组织进行信息发布与管理的核心工具。然而,从零开发一套功能完善的CMS系统需要投入大量的时间和精力。若依(RuoYi)作为一套广受欢迎的…...

基于MCP协议构建AI安全访问SQL数据库的桥梁:mcp-sql-bridge实践指南

1. 项目概述:连接AI与数据库的桥梁最近在折腾AI应用开发,特别是那些能跟真实世界数据打交道的智能体,发现一个挺普遍的需求:怎么让大语言模型(LLM)安全、高效地访问和操作数据库?直接让AI写SQL然…...

LLM生成代码补丁的评估框架与成本优化实践

1. 项目背景与核心价值去年在参与一个大型金融系统的微服务改造时,我们团队首次尝试用大语言模型生成代码补丁。当看到模型在30秒内完成了原本需要2小时人工编写的数据库连接池优化代码时,整个会议室都沸腾了。但随后就陷入了更深的困惑:这些…...

Webots传感器实战:用C语言让机器人‘看见’并‘感知’速度(含激光雷达配置)

Webots传感器实战:用C语言构建多模态环境感知机器人系统 当仿真机器人需要在复杂环境中自主导航时,单一传感器往往难以提供足够的环境信息。Webots作为专业的机器人仿真平台,其传感器系统的灵活配置和精确模拟能力,让开发者能够在…...

Simulink AUTOSAR参数配置避坑指南:Constant Memory、Shared/Per-Instance、Port Parameter到底怎么选?

Simulink AUTOSAR参数配置实战:从原理到选型的深度解析 当你在Simulink中配置AUTOSAR参数时,是否曾被Constant Memory、Shared/Per-Instance Parameters和Port Parameters这四种类型搞得晕头转向?这就像在餐厅点餐时面对一长串陌生菜名的感觉…...

2026最权威的六大AI论文工具横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低AIGC检测率,其核心就存在于消除机器生成所具备的规律性特征之中。其一&…...