📄 4-1.htm
字号:
<td width=125 style='width:93.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal style='text-indent:4.5pt;mso-char-indent-count:.5;
mso-char-indent-size:9pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=EN-US style='font-size:9.0pt'>CreateEvent()<o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
<td width=385 style='width:288.8pt;border:none;border-bottom:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>在内核中创建一个新的事件对象。此函数允许有安全性设置、手工还是自动重置的标志以及初始时已接受还是未接受信号状态的标志</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
</tr>
<tr style='mso-yfti-irow:2;height:17.0pt'>
<td width=125 style='width:93.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal style='text-indent:4.5pt;mso-char-indent-count:.5;
mso-char-indent-size:9pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=EN-US style='font-size:9.0pt'>OpenEvent()<o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
<td width=385 style='width:288.8pt;border:none;border-bottom:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>创建对已经存在的事件对象的引用。此</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='font-size:9.0pt'>API</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>函数需要名称、继承标志和所需的访问级别</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
</tr>
<tr style='mso-yfti-irow:3;height:17.0pt'>
<td width=125 style='width:93.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal style='text-indent:4.5pt;mso-char-indent-count:.5;
mso-char-indent-size:9pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=EN-US style='font-size:9.0pt'>SetEvent()<o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
<td width=385 style='width:288.8pt;border:none;border-bottom:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>将手工重置事件转化为已接受信号状态</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
</tr>
<tr style='mso-yfti-irow:4;height:17.0pt'>
<td width=125 style='width:93.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal style='text-indent:4.5pt;mso-char-indent-count:.5;
mso-char-indent-size:9pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=EN-US style='font-size:9.0pt'>ResetEvent()<o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
<td width=385 style='width:288.8pt;border:none;border-bottom:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>将手工重置事件转化为<span
class=GramE>非接受</span>信号状态</span></span></span><span style='mso-bookmark:
_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span lang=EN-US
style='font-size:9.0pt'><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
</tr>
<tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes;height:17.0pt'>
<td width=125 style='width:93.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.5pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-bottom-alt:solid windowtext 1.5pt;mso-border-right-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal style='text-indent:4.5pt;mso-char-indent-count:.5;
mso-char-indent-size:9pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=EN-US style='font-size:9.0pt'>PulseEvent()<o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
<td width=385 style='width:288.8pt;border:none;border-bottom:solid windowtext 1.5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>将自动重置事件对象转化为已接受信号状态。当系统释放所有的等待它的线程时此种转化立即发生</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span>
</tr>
</table>
</div>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437028'><span lang=FR style='mso-ansi-language:FR'> <o:p></o:p></span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt;mso-char-indent-count:2.0'><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>为了获得互斥体,首先,想要访问调用的线程可使用</span><span class=SpellE><span
lang=EN-US>OpenMutex</span></span><span lang=EN-US>() API</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>来获得指向对象的句柄;然后,线程将这个句柄提供给一个等待函数。当内核将互斥体对象发送给等待线程时,就表明该线程获得了互斥体的拥有权。当线程获得拥有权时,线程控制了对共享资源的访问——必须设法尽快地放弃互斥体。放弃共享资源时需要在该对象上调用</span><span
lang=EN-US>ReleaseMute() API</span></span></span><span style='mso-bookmark:
_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。然后系统负责将互斥<span
class=GramE>体拥有</span>权传递给下一个等待着的线程</span><span lang=EN-US> (</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>由到达时间决定顺序</span><span lang=EN-US>) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>。</span></span></span><a href="#_top"><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><span
lang=EN-US style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1025" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="4-1.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="4-1.files/image003.gif" v:shapes="_x0000_i1025"><![endif]></span></span></span></a><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'></span></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437028'><a
name="_Toc37925078"></a><a name="_Toc45704107"></a><a name="_实验目的"></a><span
style='mso-bookmark:_Toc37925078'><span style='mso-bookmark:_Toc45704107'>实验目的</span></span></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><a
name="_Toc36437029"><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>在本实验中,通过对事件和互斥体对象的了解,来加深对</span><span
lang=EN-US>Windows 2000</span></a></span><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>线程同步的理解。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>1) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>回顾系统进程、线程的有关概念,加深对</span><span lang=EN-US>Windows 2000</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>线程的理解。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>2) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解事件和互斥体对象。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>3) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>通过分析实验程序,了解管理事件对象的</span><span lang=EN-US>API</span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>4) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解在进程中如何使用事件对象。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>5) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解在进程中如何使用互斥体对象。</span></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='mso-bookmark:_Toc36437029'><span lang=EN-US>6) </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解<span class=GramE>父进程创建子进程</span>的程序设计方法。</span></span></span><a
href="#_top"><span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:
_Toc36437029'><span lang=EN-US style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1026" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="4-1.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="4-1.files/image003.gif" v:shapes="_x0000_i1026"><![endif]></span></span></span></a><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'></span></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc36437029'><a
name="_Toc37925079"></a><a name="_Toc45704108"></a><a name="_工具/准备工作"></a><span
style='mso-bookmark:_Toc37925079'><span style='mso-bookmark:_Toc45704108'>工具<span
lang=EN-US>/准备工作</span></span></span></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt;mso-char-indent-count:2.0'><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>在开始本实验之前,请回顾教科书的相关内容。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt;mso-char-indent-count:2.0'><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>您需要做以下准备:</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt;mso-char-indent-count:2.0'><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US>1) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>一台运行</span><span
lang=EN-US>Windows 2000 Professional</span></span><span style='mso-bookmark:
_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>操作系统的计算机。</span><a name="_Toc36437030"></a><a
name="_Toc37925080"><span style='mso-bookmark:_Toc36437030'></span></a></span></p>
<p class=MsoNormal style='text-indent:21.0pt;mso-char-indent-count:2.0'><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc37925080'><span
style='mso-bookmark:_Toc36437030'><span lang=EN-US>2) </span></span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='mso-bookmark:_Toc37925080'><span
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -