并发多线程1并发、进程、线程的基本概念和综述
一、并发、进程、线程的基本概念和综述
1.1 并发
两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务;
以往计算机,单核cpu(中央处理器):某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”。并发的假象(不是真正的并发),切换(上下文切换)时要保存变量的状态、执行进度等,存在时间开销;
随着硬件发展,出现了多处理器计算机:用于服务器和高性能计算领域。台式机:在一块芯片上有多核(一个CPU内有多个运算核心,对于操作系统来说,每个核心都是作为单独的CPU对待的):双核,4核,8核,10核(自己的笔记本是4核8线程的)。能够实现真正的并行执行多个任务(硬件并发)
使用并发的原因:主要就是同时可以干多个事,提高性能
1.2 可执行程序
磁盘上的一个文件,windows下,扩展名为.exe;linux下,ls -la,rwx(可读可写可执行)
1.3 进程
运行一个可执行程序,在windows下,可双击;在linux下,./文件名
进程,一个可执行程序运行起来了,就叫创建了一个进程。进程就是运行起来的可执行程序。
1.4 线程
①
a)每个进程(执行起来的可执行程序),都有唯一的一个主线程
b)当执行可执行程序时,产生一个进程后,这个主线程就随着这个进程默默启动起来了
ctrl+F5运行这个程序的时候,实际上是进程的主线程来执行(调用)这个main函数中的代码
线程:用来执行代码的。线程这个东西,可以理解为一条代码的执行通路
1.5 学习心得
- 开发多线程程序:一个是实力的体现,一个是商用的必须需求
- 线程开发有一定难度
- C++线程会设计很多新概念
- 网络方向:网络通讯、网络服务器,多线程是绝对绕不开的
二、并发的实现方法
实现并发的手段:
a)通过多个进程实现并发
b)在单独的进程中,写代码创建除了主线程之外的其他线程来实现并发
2.1 多进程并发
比如账号服务器一个进程,游戏服务器一个进程。
服务器进程之间存在通信(同一个电脑上:管道,文件,消息队列,共享内存);(不同电脑上:socket通信技术)
2.2 多线程并发
线程:感觉像是轻量级的进程。每个进程有自己独立的运行路径,但一个进程中的所有线程共享地址空间(共享内存),全局变量、全局内存、全局引用都可以在线程之间传递,所以多线程开销远远小于多进程
多进程并发和多线程并发可以混合使用,但建议优先考虑多线程技术
本课程中只讲多线程并发技术
三、C++11新标准线程库
以往
windows:CreateThread(), _beginthread(),_beginthreadexe()创建线程;linux:pthread_create()创建线程;不能跨平台
临界区,互斥量
POSIX thread(pthread):跨平台,但要做一番配置,也不方便
C++11
从C++11新标准,C++语言本身增加对多线程的支持,意味着可移植性(跨平台),这大大减少开发人员的工作量
c++11并发于多线程 哔哩哔哩_bilibili
原文链接:https://blog.csdn.net/qq_38231713/article/details/106091041
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)