<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>互斥锁 on PlumePHP</title><link>https://plumephp.com/tags/%E4%BA%92%E6%96%A5%E9%94%81/</link><description>Recent content in 互斥锁 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 05 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://plumephp.com/tags/%E4%BA%92%E6%96%A5%E9%94%81/index.xml" rel="self" type="application/rss+xml"/><item><title>13. 死锁与同步</title><link>https://plumephp.com/cs-deadlock/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://plumephp.com/cs-deadlock/</guid><description>&lt;h2 id="1-死锁的定义"&gt;1. 死锁的定义&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;死锁&lt;/strong&gt;：多个进程因竞争资源而相互等待，若无外力干预，永远都无法继续执行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;进程 P1 持有资源 A，等待资源 B
进程 P2 持有资源 B，等待资源 A

 P1 ───持有──→ 资源 A
 ↑ │
 │ ↓
 等待 等待
 │ ↓
 P2 ←──持有─── 资源 B
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="2-死锁的四个必要条件"&gt;2. 死锁的四个必要条件&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;条件&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
					&lt;th&gt;破坏策略&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;互斥&lt;/td&gt;
					&lt;td&gt;资源一次只能被一个进程占用&lt;/td&gt;
					&lt;td&gt;共享资源（如只读文件）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;占有并等待&lt;/td&gt;
					&lt;td&gt;持有资源同时等待新资源&lt;/td&gt;
					&lt;td&gt;一次性申请所有资源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;不可抢占&lt;/td&gt;
					&lt;td&gt;已分配的资源不能被强制剥夺&lt;/td&gt;
					&lt;td&gt;资源可被抢占&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;循环等待&lt;/td&gt;
					&lt;td&gt;进程-资源形成环&lt;/td&gt;
					&lt;td&gt;资源有序分配&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;四个条件必须同时满足才会死锁，破坏任一条件即可预防。&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>