C++并发与多线程笔记(1)

    技术2025-10-20  15

    一、并发、进程、线程的概念

    并发

    并发:两个或者更多的任务同时发生。(同一时间间隔),一个程序同时执行多个独立的任务;

    并发的假象(不是真正的并发):这种切换是要有时间开销的。 使用并发的原因:提高性能 可执行程序 windows下 .exe linux下 ls -la rwxrwxrwx(x执行权限) 进程:程序的一次执行,(可执行程序是能够运行的),可执行程序运行起来,就叫创建一个进程。运行起来的可执行程序。

    线程 线程:每个线程(执行起来的可执行程序),都有一个主线程,也就是进程中只能有一个主线程。 除了主线程外,我们可以通过自己写代码来创建其他线程,其他线程走的是别的道路。

    每创建一个新线程,就可以在同一个时刻,多干一个不同的事(多走一条不同的代码执行路径)

    线程是用来执行代码的; 把线程这个东西理解成一条代码的执行通路,一个新线程代表一条新的通路。 多线程程序可以同时干多个事,所以运行效率高 多线程: 线程开发有一定难度。 互斥,原子操作,死锁,,,

    并发 实现并发的手段: 我们通过多个进程实现并发 1) 多进程并发: word启动后是进程,浏览器启动后是进程. 进程之间的通信(同一个电脑上:管道,文件,消息队列,共享内存); 2)多线程并发 单个进程中,创建了多个线程。 线程:像是轻量级的进程,每个线程都有自己独立的运行路径,但是一个进程中的所有线程共享地址空间(共享内存);//例:全局变量,指针,引用 都可以在线程之间传递,因此,使用多线程开销远远小于多进程, //但共享内存会带来新问题,数据一致性问题;线程A,线程B;要有先后顺序关系,通过线程同步方法来保证数据的安全,比如采用互斥量或者读写锁。否则会发生数据竞争(多个线程同时对一个地址空间进行写操作)。

    线程有以下优点: (1)线程启动速度更快,更轻量级 (2)系统资源开销更少,执行速度更快 缺点:理解比较难 linux下: 创建线程:pthread_create() widows下:CreateThrea() //以往多线程代码不能跨平台 C++11新标准:增加对多线程的支持,意味着可移植性(跨平台)

    Processed: 0.012, SQL: 9