- win32线程API
- 进程、线程概念
|
进程 |
线程(多线程中栈私有, 堆公有) |
概念 |
资源的最小单位 |
操作系统的最小调度单位 |
通信(或同步) |
信号、信号量、消息队列、共享内存 |
临界区、互斥量、信号量、事件 |
差别 |
线程是指进程内的一个执行单元,也是进程内的可调度实体. | |
程序什么时候应该使用线程, 什么时候单线程效率高 |
1.耗时的操作使用线程,提高应用程序响应 | |
|
|
|
|
|
|
- 死锁
什么是进出死锁 |
死锁就是两个或多个进程无止境地等候着永远不会成立的条件的一种系统状态。在两个或多个并发进程中,如果每个过程持有某中资源而又都等待着别的进程释放它或他们现在白吃的资源,否则就不能向前推进。 |
进程死锁的原因 |
|
产生死锁的4个必要条件 |
互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。 (①互斥条件②不剥夺条件③部分分配(请求保持)④环路条件) |
解决死锁策略 |
1.忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。 2.检测死锁并且恢复。 3.仔细地对资源进行动态分配,以避免死锁。 4.通过破除死锁四个必要条件之一,来防止死锁产生。 |
待定...