⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sem2.htm

📁 ST20 Embedded Toolset R2.0.5用于开发基于ST20芯片机顶盒软件的开发平台,2.0.5版本,国内找不到的.在国外论坛上花了N天才找到!
💻 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:58">
<title>6.1 Overview</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="sem.htm"><img src="images/navprev.gif" width="80" height="23"
    border="0" alt="PREV"> </a></td>
    <td><a href="sem3.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="1204432"> </a><font color="#003366"  face="Verdana, Arial, Helvetica, sans-serif">6.1 	 Overview</font>
</h2><hr>


<p>
  <a name="1204434"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">A semaphore structure <font size=2 face=Courier><strong>semaphore_t</strong></font> contains two pieces of data:</font>
</p>

<ul>
<p>  <font size=2  face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204435"> </a>a count of the number of times the semaphore can be taken,</font></p>
<p>  <font size=2  face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204436"> </a>a queue of tasks waiting to take the semaphore.</font></p>
</ul>

<p>
  <a name="1204437"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">Semaphores are created using one of the following functions:</font>
</p>


<a name="1204439"> </a><font size=2 face=Courier><strong>semaphore_t* semaphore_create_fifo (int value);<br>void semaphore_init_fifo(semaphore_t *sem, int value);<br>semaphore_t* semaphore_create_priority (int value);<br>void semaphore_init_priority (semaphore_t *sem, int value);<br></strong></font>



<p>
  <a name="1204443"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">or if a timeout capability is required while waiting for a semaphore, use the timeout versions of the above functions:</font>
</p>


<a name="1204445"> </a><font size=2 face=Courier><strong>semaphore_t* semaphore_create_fifo_timeout (int value);<br>void semaphore_init_fifo_timeout(semaphore_t *sem, int value);<br>semaphore_t* semaphore_create_priority_timeout (int value);<br>void semaphore_init_priority_timeout(semaphore_t *sem, int value);<br></strong></font>



<p>
  <a name="1204449"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">The <font size=2 face=Courier><strong>create_</strong></font> versions of the functions allocate memory for the semaphore automatically, while the <font size=2 face=Courier><strong>init_</strong></font> versions enable the user to specify a pointer to the semaphore, using the data structure <font size=2 face=Courier><strong>semaphore_t</strong></font>.</font>
</p>


<p>
  <a name="1204453"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">The semaphores which OS20 provides differ in the way in which tasks are queued. Normally tasks are queued in the order which they call <font size=2 face=Courier><strong>semaphore_wait</strong></font>, in which case this is termed a FIFO semaphore. Semaphores of this type are created using <font size=2 face=Courier><strong>semaphore_create_fifo</strong></font> or <font size=2 face=Courier><strong>semaphore_init_fifo</strong></font> or by using one of the timeout versions of these functions.</font>
</p>


<p>
  <a name="1205049"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">However, sometimes it is useful to allow higher priority tasks to jump the queue, so that they are blocked for a minimum amount of time. In this case a second type of semaphore can be used, a priority based semaphore. For this type of semaphore, tasks are queued based on their priority first, and the order which they call <font size=2 face=Courier><strong>semaphore_wait</strong></font> second. Semaphores of this type are created using <font size=2 face=Courier><strong>semaphore_create_priority</strong></font> or <font size=2 face=Courier><strong>semaphore_init_priority</strong></font> or one of the timeout versions of these functions.</font>
</p>


<p>
  <a name="1205050"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">Semaphores may be acquired by the function:</font>
</p>


<a name="1205052"> </a><font size=2 face=Courier><strong>void semaphore_wait(semaphore_t* Sem);<br></strong></font>



<p>
  <a name="1204458"> </a><font size=2  face="Verdana, Arial, Helvetica, sans-serif">For semaphores created via one of the timeout functions, the following function may also be used:</font>
</p>


<a name="1204460"> </a><font size=2 face=Courier><strong>int semaphore_wait_timeout( semaphore_t* Sem<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -