以前学过c的多线程任务和锁一些相关知识,由于工作原因做Android去了,很多东西也都忘记的差不多了,现在趁学C++时来重新回顾复习一些,因为C++是C的加强版很多东西都是兼容的,因此学起来也比较容易。
多线程:多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。
- 基于进程的多任务处理是程序的并发执行。
- 基于线程的多任务处理是同一程序的片段的并发执行。
多线程的优点:
- 无需跨进程边界;
- 程序逻辑和控制方式简单;
- 所有线程可以直接共享内存和变量等;
- 线程方式消耗的总资源比进程方式好;
多线程的缺点:
- 每个线程与主程序共用地址空间,受限于2GB地址空间;
- 线程之间的同步和加锁控制比较麻烦;
- 一个线程的崩溃可能影响到整个程序的稳定性;
- 线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU;
线程互斥锁:
由于多线程是共享进程资源,并发执行。当某个线程访问资源时,其它线程就不可以访问,只能等到该线程运行完这片段后才才可以运行。这个需要lock。
锁的实现: