学习笔记(3):C++11多线程编程-并发基本概念及实现,进程、线程基本概念

立即学习:https://edu.csdn.net/course/play/9377/196520?utm_source=blogtoedu

总结线程:

1、线程是用来执行代码的;

2、把线程这个东西理解为代码的执行道路,一个新线程代表一个新道路;

3、一个进程自动包含一个主线程,主线程随着进程默默地启动并运行,我们可以通过编码来创建其他线程(非主线程);

注意:不建议创建超过200-300个线程,因为上下文切换占用了本该程序运行的时间,线程多不代表效率高,根据项目来确定创建多少个线程。

4、一个进程至少含有一个线程(主线程)。进程和线程唇齿相依,爹和儿子的关系。

5、多线程程序就是可以同时干多个事情(并发),所以运行效率高。但是到底有多高,并不是一个很容易评估和量化的东西。

6、一个可执行程序运行,就是一个进程。

二、实现并发的手段

1、多进程并发

Word启动后就是进程,IE浏览器启动后也是进程。

账号服务器,游戏逻辑服务器。服务器进程之间的通信。

进程之间的通信(同一台电脑:管道、文件消息队列、共享内存;

不同电脑:socket通讯技术)

2、多线程并发:单个进程中创建多个线程。

线程:轻量级的进程,每个线程都有自己独立的运行路径,但是同一个进程中的所有线程共享地址空间(共享内存)全局变量,指针,引用都可以子在线程之间传递,所以:使用多线程开销远远小于多进程。

共享内存带来的新问题就是,数据的一致性:A线程 B线程

多进程并发和多线程并发虽然可以混合使用,但是有限考虑多线程并发。

和进程相比,线程的优点:

a)线程的启动速度更快,更轻量级;

b) 系统资源开销更少,执行速度更快,比如共享内存这种通信方式比任何其他的通信方式都快;

缺点:

使用有一定的难度,要小心处理数据一致性问题;

三、C++11新标准线程库

以往创建线程:

Windows:CreateThread(),_beginthred(), _beginthredexe()

linux: pthread_create():创建线程

临界区、互斥量

以往多线程代码不能跨平台使用;

POSIX thread(pthread):这个库跨平台;需要做一番配置才能使用,用起来不是很方便。

从C++11新标准,C++语言本身增加多线程的支持,这就意味着可移植性了(跨平台);

 

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页