📄 task11.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher Professional Edition 6.0.5">
<meta name="TEMPLATEBASE" content="book_html">
<meta name="LASTUPDATED" content="12/01/03 14:14:41">
<title>5.10 Suspending tasks</title>
<STYLE TYPE="text/css">
<!--
span.Signal { text-transform: uppercase; font-family: Verdana }
-->
</STYLE>
</head>
<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">
<p><img src="images/stlogo.gif" width="106" height="83" align="left"
alt="logo here!"> </p>
<table width="331" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td><a href="os20toc.htm"><img src="images/navtoc.gif" width="84" height="23"
border="0" alt="TOC"> </a></td>
<td><a href="task10.htm"><img src="images/navprev.gif" width="80" height="23"
border="0" alt="PREV"> </a></td>
<td><a href="task12.htm"><img src="images/navnext.gif" width="83" height="23"
border="0" alt="NEXT"> </a></td>
<td><a href="os20ix.htm"><img src="images/navidx.gif" width="84" height="23"
border="0" alt="INDEX"> </a></td>
</tr>
</table>
<p><br clear="all">
</p>
<hr align="left">
<blockquote>
<h2>
<a name="1204804"> </a><font color="#003366" face="Verdana, Arial, Helvetica, sans-serif">5.10 Suspending tasks</font>
</h2><hr>
<p>
<a name="1204805"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Normally a task only deschedules when it is waiting for an event such as a semaphore signal. This requires that the task itself call a function indicating that it is willing to deschedule at that point (for example, by calling <font size=2 face=Courier><strong>semaphore_wait</strong></font>). However, sometimes it is useful to be able to control a task, causing it to forcibly deschedule, without it explicitly indicating that it is willing to be descheduled. This can be done by suspending the task.</font>
</p>
<p>
<a name="1204806"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">When a task is suspended, it stops executing immediately. When the task starts executing again, another task must resume it. When it is resumed, the task will be unaware that it was suspended, other than the time delay.</font>
</p>
<p>
<a name="1204807"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Task suspension is in addition to any other reason that a task is descheduled. Thus a task which is waiting on a semaphore and has been suspended will not start executing again until both the task is resumed and the semaphore is signalled, although these can occur in either order.</font>
</p>
<p>
<a name="1209108"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><b>Caution:</b></font>
<br>
<dl><dl> <dl>
<dt> <a name="1209112"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Task suspension can easily cause deadlock; see <a href="libs135.htm#1242681"><font color="#0000ff" face="Verdana, Arial, Helvetica, sans-serif"><i>task_suspend</i></font></a> in <a href="libs.htm#1214476"><font color="#0000ff" face="Verdana, Arial, Helvetica, sans-serif"><i>Chapter
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -