classtk_1_1_actor.html 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.18.0"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>tinykernel: tk::Actor&lt; MsgType, QueueSize &gt; Class Template Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="codefolding.js"></script>
  11. <script type="text/javascript" src="clipboard.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="navtreedata.js"></script>
  14. <script type="text/javascript" src="navtree.js"></script>
  15. <script type="text/javascript" src="cookie.js"></script>
  16. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  17. <script type="text/javascript" src="search/searchdata.js"></script>
  18. <script type="text/javascript" src="search/search.js"></script>
  19. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  20. </head>
  21. <body>
  22. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  23. <div id="titlearea">
  24. <table cellspacing="0" cellpadding="0">
  25. <tbody>
  26. <tr id="projectrow">
  27. <td id="projectalign">
  28. <div id="projectname">tinykernel
  29. </div>
  30. </td>
  31. </tr>
  32. </tbody>
  33. </table>
  34. </div>
  35. <!-- end header part -->
  36. <!-- Generated by Doxygen 1.18.0 -->
  37. <script type="text/javascript">
  38. let searchBox = new SearchBox("searchBox", "search/",'.html');
  39. </script>
  40. <script type="text/javascript">
  41. document.addEventListener('DOMContentLoaded', codefold.init);
  42. </script>
  43. <script type="application/json" id="doxygen-config">
  44. {
  45. "relPath": "",
  46. "generateTreeView": true,
  47. "searchEngine": true,
  48. "serverBasedSearch": false,
  49. "disableIndex": false,
  50. "dynamicMenus": true,
  51. "fullSidebar": false
  52. }
  53. </script>
  54. <script type="text/javascript" src="menudata.js"></script>
  55. <script type="text/javascript" src="menu.js"></script>
  56. <div id="main-nav-mobile">
  57. <div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>
  58. <label class="main-menu-btn" for="main-menu-state">
  59. <span class="main-menu-btn-icon"></span> Toggle main menu visibility</label>
  60. <span id="searchBoxPos1"></span>
  61. </div>
  62. </div><!-- main-nav-mobile -->
  63. <div id="main-nav">
  64. <ul class="sm sm-dox" id="main-menu">
  65. <li id="searchBoxPos2">
  66. <div id="MSearchBox" class="MSearchBoxInactive">
  67. <span class="left">
  68. <span id="MSearchSelect" class="search-icon"><span class="search-icon-dropdown"></span></span>
  69. <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"/>
  70. </span><span class="right">
  71. <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><div id="MSearchCloseImg" class="close-icon"></div></a>
  72. </span>
  73. </div>
  74. </li>
  75. </ul>
  76. </div><!-- main-nav -->
  77. </div><!-- top -->
  78. <div id="side-nav" class="ui-resizable side-nav-resizable">
  79. <div id="nav-tree">
  80. <div id="nav-tree-contents">
  81. <div id="nav-sync" class="sync"></div>
  82. </div>
  83. </div>
  84. <div id="splitbar" class="ui-resizable-handle">
  85. </div>
  86. </div>
  87. <script type="text/javascript">
  88. document.addEventListener('DOMContentLoaded',() => { initNavTree('classtk_1_1_actor.html','','classtk_1_1_actor-members'); });
  89. </script>
  90. <div id="container">
  91. <div id="doc-content">
  92. <!-- window showing the filter options -->
  93. <div id="MSearchSelectWindow">
  94. </div>
  95. <!-- iframe showing the search results (closed by default) -->
  96. <div id="MSearchResultsWindow">
  97. <div id="MSearchResults">
  98. <div class="SRPage">
  99. <div id="SRIndex">
  100. <div id="SRResults"></div>
  101. <div class="SRStatus" id="Loading">Loading...</div>
  102. <div class="SRStatus" id="Searching">Searching...</div>
  103. <div class="SRStatus" id="NoMatches">No Matches</div>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="header">
  109. <div class="headertitle"><div class="title">tk::Actor&lt; MsgType, QueueSize &gt; Class Template Reference<span class="mlabels"><span class="mlabel abstract">abstract</span></span></div></div>
  110. </div><!--header-->
  111. <div class="contents">
  112. <p>メッセージ駆動型タスク (アクター) の基底クラス
  113. <a href="#details">More...</a></p>
  114. <p><code>#include &lt;<a class="el" href="actor_8hpp_source.html">actor.hpp</a>&gt;</code></p>
  115. <table class="memberdecls">
  116. <tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
  117. Public Member Functions</h2></td></tr>
  118. <tr class="memitem:a776aef8cdcfb4416ef976697eb518ed5" id="r_a776aef8cdcfb4416ef976697eb518ed5"><td class="memItemLeft">&#160;</td><td class="memItemRight"><a class="el" href="#a776aef8cdcfb4416ef976697eb518ed5">Actor</a> ()=default</td></tr>
  119. <tr class="memitem:abfc63a514a3ae7cdbdf9ceee81c3b0fc" id="r_abfc63a514a3ae7cdbdf9ceee81c3b0fc"><td class="memItemLeft">virtual&#160;</td><td class="memItemRight"><a class="el" href="#abfc63a514a3ae7cdbdf9ceee81c3b0fc">~Actor</a> ()</td></tr>
  120. <tr class="memitem:ac98ec3132f2ded910a6899b030c06f3f" id="r_ac98ec3132f2ded910a6899b030c06f3f"><td class="memItemLeft">bool&#160;</td><td class="memItemRight"><a class="el" href="#ac98ec3132f2ded910a6899b030c06f3f">start</a> (uint32_t prio=<a class="el" href="namespacetk.html#a3d47fbd63b95ed3b46bed70c2fa1e50ea0e6779023b97999c2cef66ba1d4d1fca">PRIO_NORMAL</a>)</td></tr>
  121. <tr class="memdesc:ac98ec3132f2ded910a6899b030c06f3f"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> をタスクとして生成し、EventHub へ自動登録します <br /></td></tr>
  122. <tr class="memitem:a224e6be4dca0d1500f2121e97bd0f92d" id="r_a224e6be4dca0d1500f2121e97bd0f92d"><td class="memItemLeft">bool&#160;</td><td class="memItemRight"><a class="el" href="#a224e6be4dca0d1500f2121e97bd0f92d">post</a> (const MsgType &amp;msg)</td></tr>
  123. <tr class="memdesc:a224e6be4dca0d1500f2121e97bd0f92d"><td class="mdescLeft">&#160;</td><td class="mdescRight">この <a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> のメッセージキューへ直接メッセージを送信します (コピー渡し) <br /></td></tr>
  124. <tr class="memitem:a863f28d824aaa78c75789166b1c2a010" id="r_a863f28d824aaa78c75789166b1c2a010"><td class="memItemLeft">bool&#160;</td><td class="memItemRight"><a class="el" href="#a863f28d824aaa78c75789166b1c2a010">post</a> (MsgType &amp;&amp;msg)</td></tr>
  125. <tr class="memdesc:a863f28d824aaa78c75789166b1c2a010"><td class="mdescLeft">&#160;</td><td class="mdescRight">この <a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> のメッセージキューへ直接メッセージを送信します (ムーブ渡し) <br /></td></tr>
  126. <tr class="memitem:a5c4f4f2f1b8011a37773617e34218c2d" id="r_a5c4f4f2f1b8011a37773617e34218c2d"><td class="memTemplParams" colspan="2">template&lt;typename U = MsgType&gt; </td></tr>
  127. <tr class="memitem:a5c4f4f2f1b8011a37773617e34218c2d template"><td class="memItemLeft">std::enable_if&lt; std::is_same&lt; U, <a class="el" href="structtk_1_1_message.html">Message</a> &gt;::value, bool &gt;::type&#160;</td><td class="memItemRight"><a class="el" href="#a5c4f4f2f1b8011a37773617e34218c2d">post</a> (uint32_t id, uintptr_t arg=0)</td></tr>
  128. <tr class="memdesc:a5c4f4f2f1b8011a37773617e34218c2d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structtk_1_1_message.html" title="デフォルトの軽量メッセージ構造体">tk::Message</a> 型の場合のコンビニエンス送信関数 <br /></td></tr>
  129. <tr class="memitem:a60a2752360fa7185ec7776f2a6ef766a" id="r_a60a2752360fa7185ec7776f2a6ef766a"><td class="memItemLeft"><a class="el" href="structtk_1_1_task_handle.html">TaskHandle</a>&#160;</td><td class="memItemRight"><a class="el" href="#a60a2752360fa7185ec7776f2a6ef766a">handle</a> () const</td></tr>
  130. </table><table class="memberdecls">
  131. <tr class="heading"><td colspan="2"><h2 id="header-pro-methods" class="groupheader"><a id="pro-methods" name="pro-methods"></a>
  132. Protected Member Functions</h2></td></tr>
  133. <tr class="memitem:afb31ec0d50d1ac97e6a4ce148a96f78d" id="r_afb31ec0d50d1ac97e6a4ce148a96f78d"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#afb31ec0d50d1ac97e6a4ce148a96f78d">on_start</a> ()</td></tr>
  134. <tr class="memdesc:afb31ec0d50d1ac97e6a4ce148a96f78d"><td class="mdescLeft">&#160;</td><td class="mdescRight">タスク起動時、イベントループ突入直前に1度だけ呼ばれる初期化関数 <br /></td></tr>
  135. <tr class="memitem:a1147554d6ddb64d822285ca5a03506a4" id="r_a1147554d6ddb64d822285ca5a03506a4"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#a1147554d6ddb64d822285ca5a03506a4">on_message</a> (const MsgType &amp;msg)=0</td></tr>
  136. <tr class="memdesc:a1147554d6ddb64d822285ca5a03506a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">メッセージ受信時に呼ばれるハンドラ関数 <br /></td></tr>
  137. </table>
  138. <a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
  139. <div class="textblock"><div class="compoundTemplParams">template&lt;typename MsgType = Message, size_t QueueSize = 8&gt;<br />
  140. class tk::Actor&lt; MsgType, QueueSize &gt;</div><p>メッセージ駆動型タスク (アクター) の基底クラス </p>
  141. <p>固定長リングバッファ付きのメッセージキューを持ち、メッセージ到着時に自動起床して <span class="tt"><a class="el" href="#a1147554d6ddb64d822285ca5a03506a4" title="メッセージ受信時に呼ばれるハンドラ関数">on_message()</a></span> を実行します。メッセージが無い時は CPU を消費せずブロック待機します。</p>
  142. <dl class="tparams"><dt>Template Parameters</dt><dd>
  143. <table class="tparams">
  144. <tr><td class="paramname">MsgType</td><td>受信するメッセージの型 (デフォルト: <a class="el" href="structtk_1_1_message.html" title="デフォルトの軽量メッセージ構造体">tk::Message</a>) </td></tr>
  145. <tr><td class="paramname">QueueSize</td><td>メッセージキューの最大保持件数 (デフォルト: 8)</td></tr>
  146. </table>
  147. </dd>
  148. </dl>
  149. <div class="fragment"><div class="line"><span class="keyword">struct </span>SensorMsg { <span class="keywordtype">float</span> temp; };</div>
  150. <div class="line"> </div>
  151. <div class="line"><span class="keyword">class </span>SensorActor : <span class="keyword">public</span> <a class="code hl_class" href="classtk_1_1_actor.html">tk::Actor</a>&lt;SensorMsg, 8&gt; {</div>
  152. <div class="line"><span class="keyword">protected</span>:</div>
  153. <div class="line"> <span class="keywordtype">void</span> <a class="code hl_function" href="#afb31ec0d50d1ac97e6a4ce148a96f78d">on_start</a>()<span class="keyword"> override </span>{</div>
  154. <div class="line"> <span class="comment">// デバイスの初期化</span></div>
  155. <div class="line"> }</div>
  156. <div class="line"> <span class="keywordtype">void</span> <a class="code hl_function" href="#a1147554d6ddb64d822285ca5a03506a4">on_message</a>(<span class="keyword">const</span> SensorMsg&amp; msg)<span class="keyword"> override </span>{</div>
  157. <div class="line"> printf(<span class="stringliteral">&quot;Temp: %.1f\n&quot;</span>, msg.temp);</div>
  158. <div class="line"> }</div>
  159. <div class="line">};</div>
  160. <div class="ttc" id="aclasstk_1_1_actor_html"><div class="ttname"><a href="classtk_1_1_actor.html">tk::Actor</a></div><div class="ttdoc">メッセージ駆動型タスク (アクター) の基底クラス</div><div class="ttdef"><b>Definition</b> actor.hpp:174</div></div>
  161. <div class="ttc" id="aclasstk_1_1_actor_html_a1147554d6ddb64d822285ca5a03506a4"><div class="ttname"><a href="#a1147554d6ddb64d822285ca5a03506a4">tk::Actor::on_message</a></div><div class="ttdeci">virtual void on_message(const MsgType &amp;msg)=0</div><div class="ttdoc">メッセージ受信時に呼ばれるハンドラ関数</div></div>
  162. <div class="ttc" id="aclasstk_1_1_actor_html_afb31ec0d50d1ac97e6a4ce148a96f78d"><div class="ttname"><a href="#afb31ec0d50d1ac97e6a4ce148a96f78d">tk::Actor::on_start</a></div><div class="ttdeci">virtual void on_start()</div><div class="ttdoc">タスク起動時、イベントループ突入直前に1度だけ呼ばれる初期化関数</div><div class="ttdef"><b>Definition</b> actor.hpp:270</div></div>
  163. </div><!-- fragment --> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
  164. <a id="a776aef8cdcfb4416ef976697eb518ed5" name="a776aef8cdcfb4416ef976697eb518ed5"></a>
  165. <h2 class="memtitle"><span class="permalink"><a href="#a776aef8cdcfb4416ef976697eb518ed5">&#9670;&#160;</a></span>Actor()</h2>
  166. <div class="memitem">
  167. <div class="memproto">
  168. <div class="memtemplate">
  169. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  170. <table class="mlabels">
  171. <tr>
  172. <td class="mlabels-left">
  173. <table class="memname">
  174. <tr>
  175. <td class="memname"><a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::Actor </td>
  176. <td>(</td>
  177. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  178. <td></td>
  179. </tr>
  180. </table>
  181. </td>
  182. <td class="mlabels-right">
  183. <span class="mlabels"><span class="mlabel default">default</span></span> </td>
  184. </tr>
  185. </table>
  186. </div><div class="memdoc">
  187. </div>
  188. </div>
  189. <a id="abfc63a514a3ae7cdbdf9ceee81c3b0fc" name="abfc63a514a3ae7cdbdf9ceee81c3b0fc"></a>
  190. <h2 class="memtitle"><span class="permalink"><a href="#abfc63a514a3ae7cdbdf9ceee81c3b0fc">&#9670;&#160;</a></span>~Actor()</h2>
  191. <div class="memitem">
  192. <div class="memproto">
  193. <div class="memtemplate">
  194. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  195. <table class="mlabels">
  196. <tr>
  197. <td class="mlabels-left">
  198. <table class="memname">
  199. <tr>
  200. <td class="memname">virtual <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::~<a class="el" href="#a776aef8cdcfb4416ef976697eb518ed5">Actor</a> </td>
  201. <td>(</td>
  202. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  203. <td></td>
  204. </tr>
  205. </table>
  206. </td>
  207. <td class="mlabels-right">
  208. <span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel virtual">virtual</span></span> </td>
  209. </tr>
  210. </table>
  211. </div><div class="memdoc">
  212. </div>
  213. </div>
  214. <a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
  215. <a id="a60a2752360fa7185ec7776f2a6ef766a" name="a60a2752360fa7185ec7776f2a6ef766a"></a>
  216. <h2 class="memtitle"><span class="permalink"><a href="#a60a2752360fa7185ec7776f2a6ef766a">&#9670;&#160;</a></span>handle()</h2>
  217. <div class="memitem">
  218. <div class="memproto">
  219. <div class="memtemplate">
  220. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  221. <table class="mlabels">
  222. <tr>
  223. <td class="mlabels-left">
  224. <table class="memname">
  225. <tr>
  226. <td class="memname"><a class="el" href="structtk_1_1_task_handle.html">TaskHandle</a> <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::handle </td>
  227. <td>(</td>
  228. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  229. <td> const</td>
  230. </tr>
  231. </table>
  232. </td>
  233. <td class="mlabels-right">
  234. <span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
  235. </tr>
  236. </table>
  237. </div><div class="memdoc">
  238. <p>この <a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> のタスクハンドルを取得 </p>
  239. </div>
  240. </div>
  241. <a id="a1147554d6ddb64d822285ca5a03506a4" name="a1147554d6ddb64d822285ca5a03506a4"></a>
  242. <h2 class="memtitle"><span class="permalink"><a href="#a1147554d6ddb64d822285ca5a03506a4">&#9670;&#160;</a></span>on_message()</h2>
  243. <div class="memitem">
  244. <div class="memproto">
  245. <div class="memtemplate">
  246. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  247. <table class="mlabels">
  248. <tr>
  249. <td class="mlabels-left">
  250. <table class="memname">
  251. <tr>
  252. <td class="memname">virtual void <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::on_message </td>
  253. <td>(</td>
  254. <td class="paramtype">const MsgType &amp;</td> <td class="paramname"><span class="paramname"><em>msg</em></span></td><td>)</td>
  255. <td></td>
  256. </tr>
  257. </table>
  258. </td>
  259. <td class="mlabels-right">
  260. <span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
  261. </tr>
  262. </table>
  263. </div><div class="memdoc">
  264. <p>メッセージ受信時に呼ばれるハンドラ関数 </p>
  265. <p>キューから取り出されたメッセージの実体への参照が渡されます。 派生クラスで必ず実装します。</p>
  266. <dl class="params"><dt>Parameters</dt><dd>
  267. <table class="params">
  268. <tr><td class="paramname">msg</td><td>受信したメッセージ </td></tr>
  269. </table>
  270. </dd>
  271. </dl>
  272. </div>
  273. </div>
  274. <a id="afb31ec0d50d1ac97e6a4ce148a96f78d" name="afb31ec0d50d1ac97e6a4ce148a96f78d"></a>
  275. <h2 class="memtitle"><span class="permalink"><a href="#afb31ec0d50d1ac97e6a4ce148a96f78d">&#9670;&#160;</a></span>on_start()</h2>
  276. <div class="memitem">
  277. <div class="memproto">
  278. <div class="memtemplate">
  279. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  280. <table class="mlabels">
  281. <tr>
  282. <td class="mlabels-left">
  283. <table class="memname">
  284. <tr>
  285. <td class="memname">virtual void <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::on_start </td>
  286. <td>(</td>
  287. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  288. <td></td>
  289. </tr>
  290. </table>
  291. </td>
  292. <td class="mlabels-right">
  293. <span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel protected">protected</span><span class="mlabel virtual">virtual</span></span> </td>
  294. </tr>
  295. </table>
  296. </div><div class="memdoc">
  297. <p>タスク起動時、イベントループ突入直前に1度だけ呼ばれる初期化関数 </p>
  298. <p>タスクコンテキスト内で実行されるため、<span class="tt"><a class="el" href="namespacetk.html#aae83f84121085578a7568437a8dc2447" title="現在のタスクを指定時間スリープさせます">tk::sleep_ms()</a></span> を使った初期化ウェイトも安全に行えます。 必要に応じて派生クラスでオーバーライドします。 </p>
  299. </div>
  300. </div>
  301. <a id="a224e6be4dca0d1500f2121e97bd0f92d" name="a224e6be4dca0d1500f2121e97bd0f92d"></a>
  302. <h2 class="memtitle"><span class="permalink"><a href="#a224e6be4dca0d1500f2121e97bd0f92d">&#9670;&#160;</a></span>post() <span class="overload">[1/3]</span></h2>
  303. <div class="memitem">
  304. <div class="memproto">
  305. <div class="memtemplate">
  306. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  307. <table class="mlabels">
  308. <tr>
  309. <td class="mlabels-left">
  310. <table class="memname">
  311. <tr>
  312. <td class="memname">bool <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::post </td>
  313. <td>(</td>
  314. <td class="paramtype">const MsgType &amp;</td> <td class="paramname"><span class="paramname"><em>msg</em></span></td><td>)</td>
  315. <td></td>
  316. </tr>
  317. </table>
  318. </td>
  319. <td class="mlabels-right">
  320. <span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
  321. </tr>
  322. </table>
  323. </div><div class="memdoc">
  324. <p>この <a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> のメッセージキューへ直接メッセージを送信します (コピー渡し) </p>
  325. <p>スレッドセーフ・割り込みセーフ・マルチコアセーフです。</p>
  326. <dl class="params"><dt>Parameters</dt><dd>
  327. <table class="params">
  328. <tr><td class="paramname">msg</td><td>送信するメッセージ </td></tr>
  329. </table>
  330. </dd>
  331. </dl>
  332. <dl class="section return"><dt>Returns</dt><dd>true 送信成功, false キューが満杯 </dd></dl>
  333. </div>
  334. </div>
  335. <a id="a863f28d824aaa78c75789166b1c2a010" name="a863f28d824aaa78c75789166b1c2a010"></a>
  336. <h2 class="memtitle"><span class="permalink"><a href="#a863f28d824aaa78c75789166b1c2a010">&#9670;&#160;</a></span>post() <span class="overload">[2/3]</span></h2>
  337. <div class="memitem">
  338. <div class="memproto">
  339. <div class="memtemplate">
  340. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  341. <table class="mlabels">
  342. <tr>
  343. <td class="mlabels-left">
  344. <table class="memname">
  345. <tr>
  346. <td class="memname">bool <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::post </td>
  347. <td>(</td>
  348. <td class="paramtype">MsgType &amp;&amp;</td> <td class="paramname"><span class="paramname"><em>msg</em></span></td><td>)</td>
  349. <td></td>
  350. </tr>
  351. </table>
  352. </td>
  353. <td class="mlabels-right">
  354. <span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
  355. </tr>
  356. </table>
  357. </div><div class="memdoc">
  358. <p>この <a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> のメッセージキューへ直接メッセージを送信します (ムーブ渡し) </p>
  359. <dl class="params"><dt>Parameters</dt><dd>
  360. <table class="params">
  361. <tr><td class="paramname">msg</td><td>送信するメッセージ (ムーブ) </td></tr>
  362. </table>
  363. </dd>
  364. </dl>
  365. <dl class="section return"><dt>Returns</dt><dd>true 送信成功, false キューが満杯 </dd></dl>
  366. </div>
  367. </div>
  368. <a id="a5c4f4f2f1b8011a37773617e34218c2d" name="a5c4f4f2f1b8011a37773617e34218c2d"></a>
  369. <h2 class="memtitle"><span class="permalink"><a href="#a5c4f4f2f1b8011a37773617e34218c2d">&#9670;&#160;</a></span>post() <span class="overload">[3/3]</span></h2>
  370. <div class="memitem">
  371. <div class="memproto">
  372. <div class="memtemplate">
  373. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  374. <div class="memtemplate">
  375. template&lt;typename U = MsgType&gt; </div>
  376. <table class="mlabels">
  377. <tr>
  378. <td class="mlabels-left">
  379. <table class="memname">
  380. <tr>
  381. <td class="memname">std::enable_if&lt; std::is_same&lt; U, <a class="el" href="structtk_1_1_message.html">Message</a> &gt;::value, bool &gt;::type <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::post </td>
  382. <td>(</td>
  383. <td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>id</em></span>, </td>
  384. </tr>
  385. <tr>
  386. <td class="paramkey"></td>
  387. <td></td>
  388. <td class="paramtype">uintptr_t</td> <td class="paramname"><span class="paramname"><em>arg</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>&#160;)</td>
  389. </tr>
  390. </table>
  391. </td>
  392. <td class="mlabels-right">
  393. <span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
  394. </tr>
  395. </table>
  396. </div><div class="memdoc">
  397. <p><a class="el" href="structtk_1_1_message.html" title="デフォルトの軽量メッセージ構造体">tk::Message</a> 型の場合のコンビニエンス送信関数 </p>
  398. <dl class="params"><dt>Parameters</dt><dd>
  399. <table class="params">
  400. <tr><td class="paramname">id</td><td>メッセージID </td></tr>
  401. <tr><td class="paramname">arg</td><td>引数 (省略時: 0) </td></tr>
  402. </table>
  403. </dd>
  404. </dl>
  405. <dl class="section return"><dt>Returns</dt><dd>true 送信成功, false キューが満杯 </dd></dl>
  406. </div>
  407. </div>
  408. <a id="ac98ec3132f2ded910a6899b030c06f3f" name="ac98ec3132f2ded910a6899b030c06f3f"></a>
  409. <h2 class="memtitle"><span class="permalink"><a href="#ac98ec3132f2ded910a6899b030c06f3f">&#9670;&#160;</a></span>start()</h2>
  410. <div class="memitem">
  411. <div class="memproto">
  412. <div class="memtemplate">
  413. template&lt;typename MsgType = Message, size_t QueueSize = 8&gt; </div>
  414. <table class="mlabels">
  415. <tr>
  416. <td class="mlabels-left">
  417. <table class="memname">
  418. <tr>
  419. <td class="memname">bool <a class="el" href="classtk_1_1_actor.html">tk::Actor</a>&lt; MsgType, QueueSize &gt;::start </td>
  420. <td>(</td>
  421. <td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>prio</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="namespacetk.html#a3d47fbd63b95ed3b46bed70c2fa1e50ea0e6779023b97999c2cef66ba1d4d1fca">PRIO_NORMAL</a></span></td><td>)</td>
  422. <td></td>
  423. </tr>
  424. </table>
  425. </td>
  426. <td class="mlabels-right">
  427. <span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
  428. </tr>
  429. </table>
  430. </div><div class="memdoc">
  431. <p><a class="el" href="classtk_1_1_actor.html" title="メッセージ駆動型タスク (アクター) の基底クラス">Actor</a> をタスクとして生成し、EventHub へ自動登録します </p>
  432. <p><span class="tt"><a class="el" href="namespacetk.html#a675f1829b87e2a43239b6f80a526d0ed" title="tinykernel スケジューラを起動します">tk::start()</a></span> を呼び出す前に登録する必要があります。</p>
  433. <dl class="params"><dt>Parameters</dt><dd>
  434. <table class="params">
  435. <tr><td class="paramname">prio</td><td>タスク優先度 (省略時: <a class="el" href="namespacetk.html#a3d47fbd63b95ed3b46bed70c2fa1e50ea0e6779023b97999c2cef66ba1d4d1fca" title="通常優先度 (デフォルト)">tk::PRIO_NORMAL</a>) </td></tr>
  436. </table>
  437. </dd>
  438. </dl>
  439. <dl class="section return"><dt>Returns</dt><dd>true 登録成功, false 登録失敗 (タスク枠上限など) </dd></dl>
  440. </div>
  441. </div>
  442. <hr/>The documentation for this class was generated from the following file:<ul>
  443. <li>C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/<a class="el" href="actor_8hpp_source.html">actor.hpp</a></li>
  444. </ul>
  445. </div><!-- contents -->
  446. </div><!-- doc-content -->
  447. <div id="page-nav" class="page-nav-panel">
  448. <div id="page-nav-resize-handle"></div>
  449. <div id="page-nav-tree">
  450. <div id="page-nav-contents">
  451. </div><!-- page-nav-contents -->
  452. </div><!-- page-nav-tree -->
  453. </div><!-- page-nav -->
  454. </div><!-- container -->
  455. <!-- start footer part -->
  456. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  457. <ul>
  458. <li class="navelem"><a href="namespacetk.html">tk</a></li><li class="navelem"><a href="classtk_1_1_actor.html">Actor</a></li>
  459. <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.18.0 </li>
  460. </ul>
  461. </div>
  462. </body>
  463. </html>