C++多线程网课学习(13-01)

一、基础概念

1. 进程与线程

【可执行程序】:静态可执行的代码
【进程】运行起来的可执行程序就是一个进程,如QQ,微信。而每一个进程至少有一个线程,一个线程就是处理一个任务,而当多个任务存在时,该进程就存在多线程,如视频,打字,截图等,这些都是不同线程。

2. 并行与并发

并发:1个CPU“同时”执行不同任务(实际为按照时间片跳转不同任务执行)
并行:多个CPU同时执行不同任务

3. 多线程

01. 每个进程都有一个主线程,这个主线程是唯一的,一个进程中只能有一个主线程。每创建一个新线程,就可以在同一时刻,多做一件事。线程并不是越多越好,每个线程都需要一个独立的堆栈空间(1M),线程之间的切换要保存很多中间状态;切换会耗费本该属于程序运行的时间。
02. 创建的线程最大都不建议超过200-300个,具体合适,根据实际情况。注意,线程太多的时候效率反而降低。
03. 学习心得
  • 开发多线程:商业必须
  • 线程开发有一定难度。需要一定学习时间
  • c++线程会涉及很多新概念,不要急于求成,戒骄戒躁。

4. 并发的实现

4.1 通过多个进程,实现并发。
  • 进程之间通信,同一个电脑:管道、文件消息队列、共享内存。不同电脑:socket通信技术。
4.2 多线程并发
  • 每个线程有自己的运行路径,但是一个进程中所有线程共享内存/地址空间。
  • 全局变量、指针、引用都可以在线程之间传递。所以使用多线程开销远远小于多进程。
  • 共享内存带来问题:数据一致性问题。
  • 多进程和多线程并发中,优先考虑多线程。

5. 总结

  • 和进程相比,线程:启动速度更快、系统资源开销更少;但是使用起来有难度,要小心处理数据一致性问题。
  • 从c++11新标准,c++语言本身增加了对多线程的支持。因此可移植性提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值