-<h2 id="二、使用举例"><a href="#二、使用举例" class="headerlink" title="二、使用举例"></a>二、使用举例</h2><h3 id="2-1-一个简单的示例"><a href="#2-1-一个简单的示例" class="headerlink" title="2.1 一个简单的示例"></a>2.1 一个简单的示例</h3><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><code class="hljs c++"><span class="hljs-function"><span class="hljs-type">void</span> <span class="hljs-title">mytest</span><span class="hljs-params">(<span class="hljs-type">int</span> i)</span> </span>{<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Task %d is running\n"</span>, i);<br>}<br><br><span class="hljs-function"><span class="hljs-type">void</span> <span class="hljs-title">test</span><span class="hljs-params">()</span> </span>{<br> <span class="hljs-comment">// 创建一个协程对象,各个参数如下:</span><br> <span class="hljs-comment">// 最小协程数:1</span><br> <span class="hljs-comment">// 最大协程数:20</span><br> <span class="hljs-comment">// 协程空闲退出时间:60秒</span><br> <span class="hljs-comment">// 协程池中任务队列的缓冲区大小:500</span><br> <span class="hljs-comment">// 每个协程栈大小:64000字节</span><br> <span class="hljs-comment">// 协程池中的协程是否采用共享栈模式:否</span><br> <span class="hljs-function">acl::fiber_pool <span class="hljs-title">pool</span><span class="hljs-params">(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>, <span class="hljs-number">60</span>, <span class="hljs-number">500</span>, <span class="hljs-number">64000</span>, <span class="hljs-literal">false</span>)</span></span>;<br> <span class="hljs-type">int</span> i = <span class="hljs-number">0</span>;<br><br> <span class="hljs-comment">// 在协程池中执行第一个任务,捕获外部变量.</span><br> pool.<span class="hljs-built_in">exec</span>([i]() {<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Task %d is running\n"</span>, i);<br> });<br> i++;<br><br> <span class="hljs-comment">// 在协程池中执行第二个任务,通过变参方式传递参数.</span><br> pool.<span class="hljs-built_in">exec</span>([](<span class="hljs-type">int</span> i) {<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Task %d is running\n"</span>, i);<br> }, i);<br> i++;<br><br> <span class="hljs-comment">// 在协程池中执行第三个任务,将变参传递给普通函数.</span><br> pool.<span class="hljs-built_in">exec</span>(mytest, i);<br><br> <span class="hljs-comment">// 开始协程调度过程.</span><br> acl::fiber::<span class="hljs-built_in">schedule</span>();<br>}<br></code></pre></td></tr></table></figure>
0 commit comments