文章目录
-
- C++11 thread
-
- join和detach
-
- join
- detach
- pslist命令
-
- 使用pslist查看单线程进程
- 使用pslist命令观察多线程进程
- 单处理机下多线程程序的行为
- 临界区互斥的软件实现方法
-
- 标志法
-
- 单标志法
- 双标志法先检查
-
- 在单处理机系统上的行为
- 在多处理机系统上的行为
- 双标志法后检查
-
- 过度谦让导致饥饿
- peterson算法
C++11 thread
使用前需要首先
创建一个新的线程
比如
join和detach
join是等待,detach是分离
join
在主函数中对创建的线程对象调用join,作用是使主函数在此等待线程函数执行完毕,然后主函数再继续执行
如果不适用join等待线程函数,主函数自己呼呼跑完了,程序结束,进程释放资源,线程函数直接抛出异常
线程函数在打印49之后主函数已经结束,抛出异常
join之后线程对象不再与任何线程相关联
detach
线程在detach之后会独立于创建它的线程,在后台运行,并且没有任何可以管理他的句柄
pslist命令
需要下载然后解压,将放在才能使用该命令
类似于tasklist
栏目英文名 Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time 翻译 进程名称 进程编 进程优先级 线程数量 句柄数 特权 总占用CPU的时间 经过时间 使用pslist查看单线程进程
编译运行如下
此时发现该2852进程有三个线程,为什么是三个线程+t1托管线程+t2托管线程正好三个
单处理机下多线程程序的行为
使用vmware设置单处理机单内核模拟老式的单处理机机器
模拟单处理机机器的好处是某一时刻可以非常确定只有一个线程在运行
而有两个以上处理机则有可能两个线程同时运行
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!