1.子进程回收资源的两种方式: - 1) join让主进程等待子进程结束,并回收子进程资源,主进程再结束并回收资源。 - 2) 主进程 “正常结束” ,子进程与主进程一并被回收资源。 2.僵尸进程与孤儿进程(了解) 2.守护进程 当主进程结束时,子进程也必须结束,并回收。 3.进程间数据是隔离的 4 ...
分类:
其他好文 时间:
2019-12-07 21:06:23
阅读次数:
79
死锁:指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 此程序的两个线程会因为互相等待对方的互斥锁而陷入等待,最后由于主线程执行完毕而结束了各个子 ...
分类:
编程语言 时间:
2019-11-30 19:29:42
阅读次数:
91
通过前面对 线程互斥锁lock / 线程事件event / 线程条件变量condition / 线程定时器timer 的讲解,相信你对线程threading模块已经有了一定的了解,同时执行多个线程的确可以提高程序的效率,但是并非线程的数量越多越好,可能对于计算机而言,你直接运行20~30线程可能没太 ...
分类:
编程语言 时间:
2019-11-30 12:10:49
阅读次数:
106
在前一篇文章 python线程创建和传参 中我们介绍了关于python线程的一些简单函数使用和线程的参数传递,使用多线程可以同时执行多个任务,提高开发效率,但是在实际开发中往往我们会碰到线程同步问题,假如有这样一个场景:对全局变量累加1000000次,为了提高效率,我们可以使用多线程完成,示例代码如 ...
分类:
编程语言 时间:
2019-11-27 01:06:11
阅读次数:
81
1,为啥需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的设计 ...
分类:
其他好文 时间:
2019-11-26 13:29:23
阅读次数:
72
一. 互斥量 (一)Mutex系列类 1. std::mutex:独占的互斥量,不能递归使用。 2. std::recursive_mutex:递归互斥量。允许同一线程多次获得该互斥锁,可以用来解决同一线程需要多次获取互斥量时死锁的问题。 3. std::time_mutex和std::recurs ...
分类:
其他好文 时间:
2019-11-17 15:05:37
阅读次数:
55
synchronized关键用于多线程环境中实现操作的原子性、互斥性,确保有序的同一时间对同一资源访问。实际上,是锁的一种实现。 用法: class ClassA{ synchronized void methodA(){//修饰非静态方法1 //临界区 } synchronized static ...
分类:
其他好文 时间:
2019-11-07 19:40:39
阅读次数:
118
in test1 g_num=1172278 in test1 g_num=1288801 in main Thread g_num=1288801 ##解决方案如下(红色字体为新添加的代码) ...
分类:
编程语言 时间:
2019-10-31 13:50:42
阅读次数:
117
(手机横屏看源码更方便) 引子 大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。 我:说说AQS的大致流程? 他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala…… 我:AQS中除了同步队列,还有什么队 ...
分类:
其他好文 时间:
2019-10-31 00:18:07
阅读次数:
95
原文链接:https://www.cnblogs.com/fengbohello/p/7571722.html 互斥的概念 在多线程编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。 每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻, 只能有一个线程访问该对象。 ...
分类:
系统相关 时间:
2019-10-26 10:18:33
阅读次数:
116