📄 ch3.htm
字号:
</font></span><font color="#FFFFFF">Int<span style="mso-spacerun: yes">
</span>*lock;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">{ int t;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">t=*lock;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">*lock=1;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">return(t);</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">}</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="mso-spacerun: yes" lang="EN-US"><font color="#FFFFFF">
</font></span><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">入口:</span><span lang="EN-US">while(TS(&lock));</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="mso-spacerun: yes" lang="EN-US"><font color="#FFFFFF">
</font></span><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出口:</span><span lang="EN-US">lock=0;</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">⑵利用</span><span lang="EN-US">Swap</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令实现互斥</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><font color="#FFFFFF"><span lang="EN-US"><span style="mso-spacerun: yes">
</span>Swap</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令:</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><font color="#FFFFFF"><span style="mso-spacerun: yes">
</span>Swap(a,b)</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">Int<span style="mso-spacerun: yes">
</span>*<b style="mso-bidi-font-weight: normal">a,*</b>b;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">{</font></span></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: 22.5pt"><span lang="EN-US"><font color="#FFFFFF">int<span style="mso-spacerun: yes">
</span>t;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: 22.5pt"><span lang="EN-US"><font color="#FFFFFF">t=*a;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: 22.5pt"><span lang="EN-US"><font color="#FFFFFF">a=b;</font></span></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: 22.5pt"><span lang="EN-US"><font color="#FFFFFF">*b=t;</font></span></p>
<p><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">}</font></span></p>
<p><span style="mso-spacerun: yes" lang="EN-US"><font color="#FFFFFF">
</font></span><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">入口:</span><span lang="EN-US">key=1;</span></font></p>
<p><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">do</font></span></p>
<p><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">{swap(&lock,&key);</font></span></p>
<p><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">}while(key==0);</font></span></p>
<p><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF">
</font></span><font color="#FFFFFF">}</font></span></p>
<p><span style="mso-spacerun: yes" lang="EN-US"><font color="#FFFFFF">
</font></span><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出口:</span><span lang="EN-US">lock=0;</span></font></p>
<p> </td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
</center>
<p style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; TEXT-ALIGN: center; mso-list: l3 level2 lfo2; tab-stops: list 24.0pt" align="center"><font color="#FFFFFF"><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt"><a name="ch32"></a>3.2<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信号量机制</span><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: -16.5pt; mso-list: l1 level1 lfo4; tab-stops: list 16.5pt"><font color="#FFFFFF"><span lang="EN-US">1.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">整型信号量机制:</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font color="#FFFFFF">⑴整形信号量:</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font color="#FFFFFF">⑵利用信号量互斥:</font></span></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font color="#FFFFFF">⑶利用信号量描述前驱关系:</font></span></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: -16.5pt; mso-list: l1 level1 lfo4; tab-stops: list 16.5pt"><font color="#FFFFFF"><span lang="EN-US">2.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">记录型信号量机制:</span></font></p>
<p style="MARGIN-LEFT: 16.5pt; TEXT-INDENT: -16.5pt; mso-list: l1 level1 lfo4; tab-stops: list 16.5pt"><font color="#FFFFFF"><span lang="EN-US">3.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信号量集机制:</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><font color="#FFFFFF"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">⑴</span><span lang="EN-US">AND</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信号量集机制:</span></font></p>
<p style="MARGIN-LEFT: 16.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font color="#FFFFFF">⑵一般信号量集机制:</font></span></p>
</td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
<p style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; TEXT-ALIGN: center; mso-list: l3 level2 lfo2; tab-stops: list 24.0pt" align="center"><font color="#FFFFFF"><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt"><a name="ch33"></a>3.3<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">经典进程同步问题</span><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></p>
<p style="MARGIN-LEFT: 7.5pt; TEXT-INDENT: -7.5pt; mso-list: l2 level1 lfo5; tab-stops: list 7.5pt"><font color="#FFFFFF"><span lang="EN-US">1.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生产者消费者问题。</span></font></p>
<p style="MARGIN-LEFT: 7.5pt; TEXT-INDENT: -7.5pt; mso-list: l2 level1 lfo5; tab-stops: list 7.5pt"><font color="#FFFFFF"><span lang="EN-US">2.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读者写者问题。</span></font></p>
<p style="MARGIN-LEFT: 7.5pt; TEXT-INDENT: -7.5pt; mso-list: l2 level1 lfo5; tab-stops: list 7.5pt"><font color="#FFFFFF"><span lang="EN-US">3.<span style="FONT: 7pt 'Times New Roman'">
</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">哲学家进餐问题。</span></font></p>
</td>
</tr>
<tr>
<td width="114%" align="left" height="51" colspan="2">
<p style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; TEXT-ALIGN: center; mso-list: l3 level2 lfo2; tab-stops: list 24.0pt" align="center"><font color="#FFFFFF"><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt"><a name="ch34"></a>3.4<span style="FONT: 7pt 'Times New Roman'">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -