Browse Source

修改task_t实现,以便于将来支持stop_token。

tags/2.9.10
tearshark 2 years ago
parent
commit
65db2aac49
75 changed files with 576 additions and 479 deletions
  1. 7
    8
      asio/asio_task.h
  2. 1
    5
      asio/asio_task_1.10.0.inl
  3. 1
    3
      asio/asio_task_1.12.0.inl
  4. 1
    1
      benchmark/benchmark_asio_echo.cpp
  5. 12
    12
      doxygen/html/annotated.html
  6. 4
    4
      doxygen/html/channel__v2_8h_source.html
  7. 33
    35
      doxygen/html/classes.html
  8. 2
    2
      doxygen/html/config_8h_source.html
  9. 40
    1
      doxygen/html/current__scheduler_8h_source.html
  10. 1
    1
      doxygen/html/def_8h_source.html
  11. 8
    2
      doxygen/html/functions.html
  12. 8
    2
      doxygen/html/functions_func.html
  13. 0
    18
      doxygen/html/future_8h_source.html
  14. 1
    16
      doxygen/html/generator_8h_source.html
  15. 12
    12
      doxygen/html/hierarchy.html
  16. 1
    1
      doxygen/html/mutex__v2_8h_source.html
  17. 1
    1
      doxygen/html/promise_8h_source.html
  18. 75
    77
      doxygen/html/rf__task_8h_source.html
  19. 71
    71
      doxygen/html/scheduler_8h_source.html
  20. 2
    2
      doxygen/html/search/all_10.js
  21. 4
    4
      doxygen/html/search/all_11.js
  22. 2
    1
      doxygen/html/search/all_3.js
  23. 2
    2
      doxygen/html/search/all_4.js
  24. 2
    2
      doxygen/html/search/all_5.js
  25. 9
    7
      doxygen/html/search/all_6.js
  26. 2
    2
      doxygen/html/search/all_7.js
  27. 2
    2
      doxygen/html/search/all_8.js
  28. 5
    5
      doxygen/html/search/all_9.js
  29. 6
    6
      doxygen/html/search/all_a.js
  30. 11
    11
      doxygen/html/search/all_b.js
  31. 9
    10
      doxygen/html/search/all_c.js
  32. 1
    1
      doxygen/html/search/all_d.js
  33. 1
    1
      doxygen/html/search/all_e.js
  34. 7
    7
      doxygen/html/search/all_f.js
  35. 3
    3
      doxygen/html/search/classes_0.js
  36. 2
    2
      doxygen/html/search/classes_1.js
  37. 8
    8
      doxygen/html/search/classes_2.js
  38. 1
    1
      doxygen/html/search/classes_3.js
  39. 2
    2
      doxygen/html/search/classes_4.js
  40. 4
    3
      doxygen/html/search/classes_5.js
  41. 1
    1
      doxygen/html/search/classes_6.js
  42. 2
    2
      doxygen/html/search/classes_7.js
  43. 1
    1
      doxygen/html/search/classes_8.js
  44. 7
    7
      doxygen/html/search/classes_9.js
  45. 4
    5
      doxygen/html/search/classes_a.js
  46. 1
    1
      doxygen/html/search/classes_b.js
  47. 1
    1
      doxygen/html/search/classes_c.js
  48. 1
    1
      doxygen/html/search/functions_0.js
  49. 5
    4
      doxygen/html/search/functions_1.js
  50. 2
    2
      doxygen/html/search/functions_2.js
  51. 5
    4
      doxygen/html/search/functions_3.js
  52. 2
    2
      doxygen/html/search/functions_4.js
  53. 1
    1
      doxygen/html/search/functions_5.js
  54. 5
    5
      doxygen/html/search/functions_6.js
  55. 5
    5
      doxygen/html/search/functions_7.js
  56. 5
    5
      doxygen/html/search/functions_8.js
  57. 5
    5
      doxygen/html/search/functions_9.js
  58. 1
    1
      doxygen/html/search/functions_a.js
  59. 1
    1
      doxygen/html/search/functions_b.js
  60. 6
    6
      doxygen/html/search/functions_c.js
  61. 1
    1
      doxygen/html/search/functions_d.js
  62. 4
    4
      doxygen/html/search/functions_e.js
  63. 1
    1
      doxygen/html/search/variables_0.js
  64. 2
    2
      doxygen/html/state_8h_source.html
  65. 1
    1
      doxygen/html/structresumef_1_1scheduler__t-members.html
  66. 14
    7
      doxygen/html/structresumef_1_1scheduler__t.html
  67. 59
    0
      librf/src/current_scheduler.h
  68. 1
    1
      librf/src/def.h
  69. 1
    0
      librf/src/macro_def.inl
  70. 6
    1
      librf/src/rf_task.cpp
  71. 21
    24
      librf/src/rf_task.h
  72. 16
    4
      librf/src/scheduler.cpp
  73. 9
    7
      librf/src/scheduler.h
  74. 3
    3
      vs_proj/librf.vcxproj
  75. 12
    9
      vs_proj/librf.vcxproj.filters

librf/src/asio_task.h → asio/asio_task.h View File

@@ -1,8 +1,7 @@

#pragma once
#if ASIO_VERSION >= 101200
#include "asio_task_1.12.0.inl"
#else
#include "asio_task_1.10.0.inl"
#endif
#pragma once

#if ASIO_VERSION >= 101200
#include "asio_task_1.12.0.inl"
#else
#include "asio_task_1.10.0.inl"
#endif

librf/src/asio_task_1.10.0.inl → asio/asio_task_1.10.0.inl View File

@@ -1,8 +1,4 @@

#pragma once

#include "future.h"
#include <memory>
#include <memory>

#include "asio/detail/push_options.hpp"


librf/src/asio_task_1.12.0.inl → asio/asio_task_1.12.0.inl View File

@@ -1,6 +1,4 @@

#include "future.h"
#include <memory>
#include <memory>

#include "asio/detail/push_options.hpp"


+ 1
- 1
benchmark/benchmark_asio_echo.cpp View File

@@ -9,7 +9,7 @@
#include "librf.h"
#include <asio.hpp>
#include "src/asio_task.h"
#include "../asio/asio_task.h"
#pragma warning(disable : 4834)

+ 12
- 12
doxygen/html/annotated.html View File

@@ -84,18 +84,18 @@ $(function() {
<tr id="row_1_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1future__t.html" target="_self">future_t</a></td><td class="desc">用于resumef协程的返回值。 </td></tr>
<tr id="row_1_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1generator__t.html" target="_self">generator_t</a></td><td class="desc">专用于co_yield函数。 </td></tr>
<tr id="row_1_12_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html" target="_self">get_current_scheduler_awaitor</a></td><td class="desc">获得本协程绑定的调度器的可等待对象。 </td></tr>
<tr id="row_1_13_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__root__state__awaitor.html" target="_self">get_root_state_awaitor</a></td><td class="desc">获得本协程绑定的跟state指针的可等待对象。 </td></tr>
<tr id="row_1_14_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1local__scheduler__t.html" target="_self">local_scheduler_t</a></td><td class="desc">创建一个线程相关的调度器。 </td></tr>
<tr id="row_1_15_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__exception.html" target="_self">mutex_exception</a></td><td class="desc">错误使用mutex_t时产生的异常。 </td></tr>
<tr id="row_1_16_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__t.html" target="_self">mutex_t</a></td><td class="desc">支持递归的锁。 </td></tr>
<tr id="row_1_17_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1scheduler__t.html" target="_self">scheduler_t</a></td><td class="desc">协程调度器。 </td></tr>
<tr id="row_1_18_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1spinlock.html" target="_self">spinlock</a></td><td class="desc">一个自旋锁实现。 </td></tr>
<tr id="row_1_19_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__base__t.html" target="_self">state_base_t</a></td><td class="desc">State基类,state用于在协程的promise和future之间共享数据。 </td></tr>
<tr id="row_1_20_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__future__t.html" target="_self">state_future_t</a></td><td class="desc">专用于future_t&lt;&gt;的state基类,实现了针对于future_t&lt;&gt;的公共方法等。 </td></tr>
<tr id="row_1_21_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__generator__t.html" target="_self">state_generator_t</a></td><td class="desc">专用于generator_t&lt;&gt;的state类。 </td></tr>
<tr id="row_1_22_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__t.html" target="_self">state_t</a></td><td class="desc">专用于future_t&lt;&gt;的state类。 </td></tr>
<tr id="row_1_23_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html" target="_self">switch_scheduler_awaitor</a></td><td class="desc">切换协程的可等待对象。 </td></tr>
<tr id="row_1_24_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1task__t.html" target="_self">task_t</a></td><td class="desc">协程任务类。 </td></tr>
<tr id="row_1_13_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__current__task__awaitor.html" target="_self">get_current_task_awaitor</a></td><td class="desc">获得本协程的task_t对象。 </td></tr>
<tr id="row_1_14_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__root__state__awaitor.html" target="_self">get_root_state_awaitor</a></td><td class="desc">获得本协程绑定的跟state指针的可等待对象。 </td></tr>
<tr id="row_1_15_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1local__scheduler__t.html" target="_self">local_scheduler_t</a></td><td class="desc">创建一个线程相关的调度器。 </td></tr>
<tr id="row_1_16_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__exception.html" target="_self">mutex_exception</a></td><td class="desc">错误使用mutex_t时产生的异常。 </td></tr>
<tr id="row_1_17_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__t.html" target="_self">mutex_t</a></td><td class="desc">支持递归的锁。 </td></tr>
<tr id="row_1_18_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1scheduler__t.html" target="_self">scheduler_t</a></td><td class="desc">协程调度器。 </td></tr>
<tr id="row_1_19_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1spinlock.html" target="_self">spinlock</a></td><td class="desc">一个自旋锁实现。 </td></tr>
<tr id="row_1_20_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__base__t.html" target="_self">state_base_t</a></td><td class="desc">State基类,state用于在协程的promise和future之间共享数据。 </td></tr>
<tr id="row_1_21_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__future__t.html" target="_self">state_future_t</a></td><td class="desc">专用于future_t&lt;&gt;的state基类,实现了针对于future_t&lt;&gt;的公共方法等。 </td></tr>
<tr id="row_1_22_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__generator__t.html" target="_self">state_generator_t</a></td><td class="desc">专用于generator_t&lt;&gt;的state类。 </td></tr>
<tr id="row_1_23_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__t.html" target="_self">state_t</a></td><td class="desc">专用于future_t&lt;&gt;的state类。 </td></tr>
<tr id="row_1_24_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html" target="_self">switch_scheduler_awaitor</a></td><td class="desc">切换协程的可等待对象。 </td></tr>
<tr id="row_1_25_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1timer__canceled__exception.html" target="_self">timer_canceled_exception</a></td><td class="desc">定时器提前取消导致的异常。 </td></tr>
<tr id="row_1_26_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1timer__handler.html" target="_self">timer_handler</a></td><td class="desc">定时器句柄。 </td></tr>
<tr id="row_1_27_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1timer__manager.html" target="_self">timer_manager</a></td><td class="desc">定时器管理器。 </td></tr>

+ 4
- 4
doxygen/html/channel__v2_8h_source.html View File

@@ -76,7 +76,7 @@ $(function() {
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keyword">class</span> _Opty&gt;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keywordtype">bool</span> _Optional&gt;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">struct </span>channel_impl_v2;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;} <span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
@@ -103,7 +103,7 @@ $(function() {
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>U</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; COMMA_RESUMEF_ENABLE_IF(std::is_constructible_v&lt;value_type, U&amp;&amp;&gt;)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; COMMA_RESUMEF_ENABLE_IF(std::is_constructible_v&lt;_Ty, U&amp;&amp;&gt;)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; &gt;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
@@ -113,7 +113,7 @@ $(function() {
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>U</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; COMMA_RESUMEF_ENABLE_IF(std::is_constructible_v&lt;value_type, U&amp;&amp;&gt;)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; COMMA_RESUMEF_ENABLE_IF(std::is_constructible_v&lt;_Ty, U&amp;&amp;&gt;)</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; &gt;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
@@ -129,7 +129,7 @@ $(function() {
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> optimization_for_multithreading = _OptimizationThread;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">using</span> optional_type = std::conditional_t&lt;use_optional, std::optional&lt;value_type&gt;, value_type&gt;;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">using</span> channel_type = detail::channel_impl_v2&lt;value_type, optional_type&gt;;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">using</span> channel_type = detail::channel_impl_v2&lt;value_type, use_optional&gt;;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">using</span> lock_type = <span class="keyword">typename</span> channel_type::lock_type;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="structresumef_1_1channel__t.html">channel_t</a>(<span class="keyword">const</span> <a class="code" href="structresumef_1_1channel__t.html">channel_t</a>&amp;) = <span class="keywordflow">default</span>;</div>

+ 33
- 35
doxygen/html/classes.html View File

@@ -70,74 +70,72 @@ $(function() {
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1channel__t.html">channel_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1get__root__state__awaitor.html">get_root_state_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1spinlock.html">spinlock</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1detail_1_1timer__target.html">timer_target</a> (resumef::detail)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1get__current__task__awaitor.html">get_current_task_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__handler.html">timer_handler</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1counted__ptr.html">counted_ptr</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1state__base__t.html">state_base_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_w"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;w&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1get__root__state__awaitor.html">get_root_state_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__manager.html">timer_manager</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1adopt__manual__unlock__t.html">adopt_manual_unlock_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_e"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;e&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1state__future__t.html">state_future_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1scheduler__t.html">scheduler_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1detail_1_1timer__target.html">timer_target</a> (resumef::detail)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1awaitable__impl__t.html">awaitable_impl_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1state__generator__t.html">state_generator_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1when__.html">when_</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1spinlock.html">spinlock</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_w"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;w&#160;&#160;</div></td></tr></table>
</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1awaitable__t.html">awaitable_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1event__t.html">event_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1state__t.html">state_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;y&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1state__base__t.html">state_base_t</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td>
<td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;f&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html">switch_scheduler_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1state__future__t.html">state_future_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1when__.html">when_</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1mutex__exception.html">mutex_exception</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
<tr><td valign="top"><a class="el" href="structresumef_1_1state__generator__t.html">state_generator_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;y&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1yield__awaitor.html">yield_awaitor</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="classresumef_1_1batch__lock__t.html">batch_lock_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1future__t.html">future_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1mutex__t.html">mutex_t</a> (resumef)&#160;&#160;&#160;</td>
<td></td></tr>
<td valign="top"><a class="el" href="structresumef_1_1mutex__exception.html">mutex_exception</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1state__t.html">state_t</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1batch__unlock__t.html">batch_unlock_t</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;g&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1mutex__t.html">mutex_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html">switch_scheduler_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1yield__awaitor.html">yield_awaitor</a> (resumef)&#160;&#160;&#160;</td>
</tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
</td>
<td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1task__t.html">task_t</a> (resumef)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
<td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__canceled__exception.html">timer_canceled_exception</a> (resumef)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1generator__t.html">generator_t</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classasio_1_1rf__task__t.html">rf_task_t</a> (asio)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__handler.html">timer_handler</a> (resumef)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td valign="top"><a class="el" href="structresumef_1_1channel__exception.html">channel_exception</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html">get_current_scheduler_awaitor</a> (resumef)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__manager.html">timer_manager</a> (resumef)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classasio_1_1rf__task__t.html">rf_task_t</a> (asio)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="structresumef_1_1timer__canceled__exception.html">timer_canceled_exception</a> (resumef)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td valign="top"><a class="el" href="structresumef_1_1scheduler__t.html">scheduler_t</a> (resumef)&#160;&#160;&#160;</td>
<td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_e">e</a>&#160;|&#160;<a class="qindex" href="#letter_f">f</a>&#160;|&#160;<a class="qindex" href="#letter_g">g</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_w">w</a>&#160;|&#160;<a class="qindex" href="#letter_y">y</a></div>

+ 2
- 2
doxygen/html/config_8h_source.html View File

@@ -85,9 +85,9 @@ $(function() {
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RESUMEF_ENABLE_CONCEPT</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#ifdef __cpp_lib_concepts</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#define RESUMEF_ENABLE_CONCEPT 1</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">/* #undef RESUMEF_ENABLE_CONCEPT */</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#define RESUMEF_ENABLE_CONCEPT 1</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/* #undef RESUMEF_ENABLE_CONCEPT */</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif //#ifdef __cpp_lib_concepts</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif //#ifndef RESUMEF_ENABLE_CONCEPT</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>

+ 40
- 1
doxygen/html/current__scheduler_8h_source.html View File

@@ -142,13 +142,52 @@ $(function() {
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structresumef_1_1get__current__task__awaitor.html"> 123</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1get__current__task__awaitor.html">get_current_task_awaitor</a></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">bool</span> await_ready() <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _PromiseT, <span class="keyword">typename</span> = std::enable_if_t&lt;traits::is_promise_v&lt;_PromiseT&gt;&gt;&gt;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">bool</span> await_suspend(coroutine_handle&lt;_PromiseT&gt; handler)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; _PromiseT&amp; promise = handler.promise();</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">auto</span>* parent = promise.get_state();</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a> * state = parent-&gt;get_root();</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>* sch = state-&gt;get_scheduler();</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; this-&gt;_task = sch-&gt;find_task(state);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; task_t* await_resume() <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> _task;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; task_t* _task;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#ifdef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <a class="code" href="structresumef_1_1get__root__state__awaitor.html">get_root_state_awaitor</a> <a class="code" href="structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb">get_current_task</a>() noexcept;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">static</span> task_t* <a class="code" href="structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282">current_task</a>() noexcept;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; };</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">inline</span> <a class="code" href="structresumef_1_1get__current__task__awaitor.html">get_current_task_awaitor</a> get_current_task() noexcept</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructresumef_1_1get__root__state__awaitor_html"><div class="ttname"><a href="structresumef_1_1get__root__state__awaitor.html">resumef::get_root_state_awaitor</a></div><div class="ttdoc">获得本协程绑定的跟state指针的可等待对象。</div><div class="ttdef"><b>Definition:</b> current_scheduler.h:66</div></div>
<div class="ttc" id="astructresumef_1_1get__current__scheduler__awaitor_html_a87bd06c80e5cc26bd8a3bb0025c6bb6a"><div class="ttname"><a href="structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a">resumef::get_current_scheduler_awaitor::current_scheduler</a></div><div class="ttdeci">static scheduler_t * current_scheduler() noexcept</div><div class="ttdoc">获得当前协程绑定的调度器。</div></div>
<div class="ttc" id="astructresumef_1_1get__current__scheduler__awaitor_html"><div class="ttname"><a href="structresumef_1_1get__current__scheduler__awaitor.html">resumef::get_current_scheduler_awaitor</a></div><div class="ttdoc">获得本协程绑定的调度器的可等待对象。</div><div class="ttdef"><b>Definition:</b> current_scheduler.h:8</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html"><div class="ttname"><a href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></div><div class="ttdoc">协程调度器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:10</div></div>
<div class="ttc" id="astructresumef_1_1get__current__task__awaitor_html_a58d877db176f6ccbe4fc2a2594b87282"><div class="ttname"><a href="structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282">resumef::get_current_task_awaitor::current_task</a></div><div class="ttdeci">static task_t * current_task() noexcept</div><div class="ttdoc">获得当前协程的task_t指针。</div></div>
<div class="ttc" id="astructresumef_1_1get__current__task__awaitor_html"><div class="ttname"><a href="structresumef_1_1get__current__task__awaitor.html">resumef::get_current_task_awaitor</a></div><div class="ttdoc">获得本协程的task_t对象。</div><div class="ttdef"><b>Definition:</b> current_scheduler.h:123</div></div>
<div class="ttc" id="astructresumef_1_1get__root__state__awaitor_html_adffac6b1ec6065c68dc345aa6fff5e49"><div class="ttname"><a href="structresumef_1_1get__root__state__awaitor.html#adffac6b1ec6065c68dc345aa6fff5e49">resumef::get_root_state_awaitor::get_root_state</a></div><div class="ttdeci">static get_root_state_awaitor get_root_state() noexcept</div><div class="ttdoc">获得当前协程的跟state指针。</div></div>
<div class="ttc" id="astructresumef_1_1get__current__task__awaitor_html_a323b0f70222fd1f631bd14e3a0d81ccb"><div class="ttname"><a href="structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb">resumef::get_current_task_awaitor::get_current_task</a></div><div class="ttdeci">static get_root_state_awaitor get_current_task() noexcept</div><div class="ttdoc">获得当前协程的task_t指针。</div></div>
<div class="ttc" id="astructresumef_1_1state__base__t_html"><div class="ttname"><a href="structresumef_1_1state__base__t.html">resumef::state_base_t</a></div><div class="ttdoc">state基类,state用于在协程的promise和future之间共享数据。</div><div class="ttdef"><b>Definition:</b> state.h:8</div></div>
<div class="ttc" id="astructresumef_1_1get__root__state__awaitor_html_ae6ad15614c2597a714b84bfc3e369b8a"><div class="ttname"><a href="structresumef_1_1get__root__state__awaitor.html#ae6ad15614c2597a714b84bfc3e369b8a">resumef::get_root_state_awaitor::root_state</a></div><div class="ttdeci">static state_base_t * root_state() noexcept</div><div class="ttdoc">获得当前协程的跟state指针。</div></div>
<div class="ttc" id="astructresumef_1_1get__current__scheduler__awaitor_html_ae47a1b255bffdfc2c7762f4d9cf9b3bf"><div class="ttname"><a href="structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf">resumef::get_current_scheduler_awaitor::get_current_scheduler</a></div><div class="ttdeci">static get_current_scheduler_awaitor get_current_scheduler() noexcept</div><div class="ttdoc">获得当前协程绑定的调度器。</div></div>

+ 1
- 1
doxygen/html/def_8h_source.html View File

@@ -71,7 +71,7 @@ $(function() {
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#define LIB_RESUMEF_VERSION 20907 // 2.9.7</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#define LIB_RESUMEF_VERSION 20909 // 2.9.9</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">namespace </span>resumef</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;{</div>

+ 8
- 2
doxygen/html/functions.html View File

@@ -85,11 +85,14 @@ $(function() {
: <a class="el" href="structresumef_1_1channel__t.html#ac94d5fa13a6c1f5cc5d3ee3e50fa4232">resumef::channel_t&lt; _Ty, _Optional, _OptimizationThread &gt;</a>
</li>
<li>counted_ptr()
: <a class="el" href="structresumef_1_1counted__ptr.html#ad3969379af7311183c1c11d13f6da9f3">resumef::counted_ptr&lt; T &gt;</a>
: <a class="el" href="structresumef_1_1counted__ptr.html#ad466495cf5a6056e326a923558676ccd">resumef::counted_ptr&lt; T &gt;</a>
</li>
<li>current_scheduler()
: <a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a">resumef::get_current_scheduler_awaitor</a>
</li>
<li>current_task()
: <a class="el" href="structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282">resumef::get_current_task_awaitor</a>
</li>
</ul>


@@ -110,6 +113,9 @@ $(function() {
<li>get_current_scheduler()
: <a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf">resumef::get_current_scheduler_awaitor</a>
</li>
<li>get_current_task()
: <a class="el" href="structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb">resumef::get_current_task_awaitor</a>
</li>
<li>get_future()
: <a class="el" href="structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d">resumef::awaitable_impl_t&lt; _Ty &gt;</a>
</li>
@@ -144,7 +150,7 @@ $(function() {
, <a class="el" href="structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de">resumef::mutex_t</a>
</li>
<li>operator+()
: <a class="el" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">resumef::scheduler_t</a>
: <a class="el" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">resumef::scheduler_t</a>
</li>
<li>operator-&gt;()
: <a class="el" href="structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba">resumef::counted_ptr&lt; T &gt;</a>

+ 8
- 2
doxygen/html/functions_func.html View File

@@ -78,11 +78,14 @@ $(function() {
: <a class="el" href="structresumef_1_1channel__t.html#ac94d5fa13a6c1f5cc5d3ee3e50fa4232">resumef::channel_t&lt; _Ty, _Optional, _OptimizationThread &gt;</a>
</li>
<li>counted_ptr()
: <a class="el" href="structresumef_1_1counted__ptr.html#a8b6f5332dd4754c22970f7e5406c6233">resumef::counted_ptr&lt; T &gt;</a>
: <a class="el" href="structresumef_1_1counted__ptr.html#ad3969379af7311183c1c11d13f6da9f3">resumef::counted_ptr&lt; T &gt;</a>
</li>
<li>current_scheduler()
: <a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a">resumef::get_current_scheduler_awaitor</a>
</li>
<li>current_task()
: <a class="el" href="structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282">resumef::get_current_task_awaitor</a>
</li>
</ul>


@@ -103,6 +106,9 @@ $(function() {
<li>get_current_scheduler()
: <a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf">resumef::get_current_scheduler_awaitor</a>
</li>
<li>get_current_task()
: <a class="el" href="structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb">resumef::get_current_task_awaitor</a>
</li>
<li>get_future()
: <a class="el" href="structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d">resumef::awaitable_impl_t&lt; _Ty &gt;</a>
</li>
@@ -137,7 +143,7 @@ $(function() {
, <a class="el" href="structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de">resumef::mutex_t</a>
</li>
<li>operator+()
: <a class="el" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">resumef::scheduler_t</a>
: <a class="el" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">resumef::scheduler_t</a>
</li>
<li>operator-&gt;()
: <a class="el" href="structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba">resumef::counted_ptr&lt; T &gt;</a>

+ 0
- 18
doxygen/html/future_8h_source.html View File

@@ -111,24 +111,6 @@ $(function() {
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; };</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">namespace </span>std {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">namespace </span>experimental {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">/*If the coroutine is defined as task&lt;float&gt; foo(std::string x, bool flag);, </span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> then its Promise type is std::coroutine_traits&lt;task&lt;float&gt;, std::string, bool&gt;::promise_type.</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> If the coroutine is a non-static member function, such as task&lt;void&gt; my_class::method1(int x) const;, </span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> its Promise type is std::coroutine_traits&lt;task&lt;void&gt;, const my_class&amp;, int&gt;::promise_type.</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Ty, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">struct </span>coroutine_traits&lt;resumef::future_t&lt;_Ty&gt;, Args...&gt;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">typedef</span> resumef::promise_t&lt;_Ty&gt; promise_type;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; };</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;} <span class="comment">// namespace std::experimental</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructresumef_1_1future__t_html"><div class="ttname"><a href="structresumef_1_1future__t.html">resumef::future_t</a></div><div class="ttdoc">用于resumef协程的返回值。</div><div class="ttdef"><b>Definition:</b> future.h:14</div></div>
<div class="ttc" id="astructresumef_1_1counted__ptr_html"><div class="ttname"><a href="structresumef_1_1counted__ptr.html">resumef::counted_ptr&lt; state_type &gt;</a></div></div>

+ 1
- 16
doxygen/html/generator_8h_source.html View File

@@ -228,7 +228,7 @@ $(function() {
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; (void)e;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::terminate();</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__)</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> unhandled_exception()</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::terminate();</div>
@@ -389,21 +389,6 @@ $(function() {
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#pragma pop_macro(&quot;new&quot;)</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#pragma pack(pop)</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="keyword">namespace </span>std {</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">namespace </span>experimental {</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Ty, <span class="keyword">typename</span> _Alloc, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">struct </span>coroutine_traits&lt;resumef::generator_t&lt;_Ty, _Alloc&gt;, Args...&gt;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structresumef_1_1generator__t.html">resumef::generator_t&lt;_Ty, _Alloc&gt;::promise_type</a> promise_type;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; };</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;} <span class="comment">// namespace std::experimental</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; </div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructresumef_1_1counted__ptr_html"><div class="ttname"><a href="structresumef_1_1counted__ptr.html">resumef::counted_ptr&lt; state_type &gt;</a></div></div>
<div class="ttc" id="astructresumef_1_1state__generator__t_html"><div class="ttname"><a href="structresumef_1_1state__generator__t.html">resumef::state_generator_t</a></div><div class="ttdoc">专用于generator_t&lt;&gt;的state类。</div><div class="ttdef"><b>Definition:</b> state.h:70</div></div>

+ 12
- 12
doxygen/html/hierarchy.html View File

@@ -89,18 +89,18 @@ $(function() {
<tr id="row_14_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1future__t.html" target="_self">resumef::future_t&lt; T &gt;</a></td><td class="desc"></td></tr>
<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1generator__t.html" target="_self">resumef::generator_t&lt; _Ty, _Alloc &gt;</a></td><td class="desc">专用于co_yield函数。 </td></tr>
<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__current__scheduler__awaitor.html" target="_self">resumef::get_current_scheduler_awaitor</a></td><td class="desc">获得本协程绑定的调度器的可等待对象。 </td></tr>
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__root__state__awaitor.html" target="_self">resumef::get_root_state_awaitor</a></td><td class="desc">获得本协程绑定的跟state指针的可等待对象。 </td></tr>
<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1local__scheduler__t.html" target="_self">resumef::local_scheduler_t</a></td><td class="desc">创建一个线程相关的调度器。 </td></tr>
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__t.html" target="_self">resumef::mutex_t</a></td><td class="desc">支持递归的锁。 </td></tr>
<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classasio_1_1rf__task__t.html" target="_self">asio::rf_task_t&lt; Allocator &gt;</a></td><td class="desc">用于指示asio相关异步函数,返回resumef::future_t&lt;&gt;的类型,从而变成支持 librf 的协程函数。 </td></tr>
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1scheduler__t.html" target="_self">resumef::scheduler_t</a></td><td class="desc">协程调度器。 </td></tr>
<tr id="row_22_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1spinlock.html" target="_self">resumef::spinlock</a></td><td class="desc">一个自旋锁实现。 </td></tr>
<tr id="row_23_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_23_" class="arrow" onclick="toggleFolder('23_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__base__t.html" target="_self">resumef::state_base_t</a></td><td class="desc">State基类,state用于在协程的promise和future之间共享数据。 </td></tr>
<tr id="row_23_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_0_" class="arrow" onclick="toggleFolder('23_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__future__t.html" target="_self">resumef::state_future_t</a></td><td class="desc">专用于future_t&lt;&gt;的state基类,实现了针对于future_t&lt;&gt;的公共方法等。 </td></tr>
<tr id="row_23_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__t.html" target="_self">resumef::state_t&lt; _Ty &gt;</a></td><td class="desc">专用于future_t&lt;&gt;的state类。 </td></tr>
<tr id="row_23_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__generator__t.html" target="_self">resumef::state_generator_t</a></td><td class="desc">专用于generator_t&lt;&gt;的state类。 </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html" target="_self">resumef::switch_scheduler_awaitor</a></td><td class="desc">切换协程的可等待对象。 </td></tr>
<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1task__t.html" target="_self">resumef::task_t&lt; _Ty, class &gt;</a></td><td class="desc">协程任务类。 </td></tr>
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__current__task__awaitor.html" target="_self">resumef::get_current_task_awaitor</a></td><td class="desc">获得本协程的task_t对象。 </td></tr>
<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1get__root__state__awaitor.html" target="_self">resumef::get_root_state_awaitor</a></td><td class="desc">获得本协程绑定的跟state指针的可等待对象。 </td></tr>
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1local__scheduler__t.html" target="_self">resumef::local_scheduler_t</a></td><td class="desc">创建一个线程相关的调度器。 </td></tr>
<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1mutex__t.html" target="_self">resumef::mutex_t</a></td><td class="desc">支持递归的锁。 </td></tr>
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classasio_1_1rf__task__t.html" target="_self">asio::rf_task_t&lt; Allocator &gt;</a></td><td class="desc">用于指示asio相关异步函数,返回resumef::future_t&lt;&gt;的类型,从而变成支持 librf 的协程函数。 </td></tr>
<tr id="row_22_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1scheduler__t.html" target="_self">resumef::scheduler_t</a></td><td class="desc">协程调度器。 </td></tr>
<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1spinlock.html" target="_self">resumef::spinlock</a></td><td class="desc">一个自旋锁实现。 </td></tr>
<tr id="row_24_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_24_" class="arrow" onclick="toggleFolder('24_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__base__t.html" target="_self">resumef::state_base_t</a></td><td class="desc">State基类,state用于在协程的promise和future之间共享数据。 </td></tr>
<tr id="row_24_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_24_0_" class="arrow" onclick="toggleFolder('24_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__future__t.html" target="_self">resumef::state_future_t</a></td><td class="desc">专用于future_t&lt;&gt;的state,实现了针对于future_t&lt;&gt;的公共方法等。 </td></tr>
<tr id="row_24_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__t.html" target="_self">resumef::state_t&lt; _Ty &gt;</a></td><td class="desc">专用于future_t&lt;&gt;的state类。 </td></tr>
<tr id="row_24_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1state__generator__t.html" target="_self">resumef::state_generator_t</a></td><td class="desc">专用于generator_t&lt;&gt;的state类。 </td></tr>
<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1switch__scheduler__awaitor.html" target="_self">resumef::switch_scheduler_awaitor</a></td><td class="desc">切换协程的可等待对象。 </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1timer__handler.html" target="_self">resumef::timer_handler</a></td><td class="desc">定时器句柄。 </td></tr>
<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1timer__manager.html" target="_self">resumef::timer_manager</a></td><td class="desc">定时器管理器。 </td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structresumef_1_1detail_1_1timer__target.html" target="_self">resumef::detail::timer_target</a></td><td class="desc">定时器对象。 </td></tr>

+ 1
- 1
doxygen/html/mutex__v2_8h_source.html View File

@@ -88,7 +88,7 @@ $(function() {
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; constexpr <a class="code" href="structresumef_1_1adopt__manual__unlock__t.html">adopt_manual_unlock_t</a> adopt_manual_unlock;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>... _Mtxs&gt;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="structresumef_1_1batch__unlock__t.html"> 28</a></span>&#160; <span class="keyword">struct </span>[[nodiscard]] <a class="code" href="structresumef_1_1batch__unlock__t.html">batch_unlock_t</a>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="structresumef_1_1batch__unlock__t.html"> 28</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1batch__unlock__t.html">batch_unlock_t</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="structresumef_1_1mutex__t.html"> 34</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1mutex__t.html">mutex_t</a></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div>

+ 1
- 1
doxygen/html/promise_8h_source.html View File

@@ -101,7 +101,7 @@ $(function() {
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; template &lt;typename _Uty&gt;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; _Uty&amp;&amp; await_transform(_Uty&amp;&amp; _Whatever) noexcept;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">void</span> set_exception(std::exception_ptr e);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__)</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> unhandled_exception(); <span class="comment">//If the coroutine ends with an uncaught exception, it performs the following: </span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; future_type get_return_object() noexcept;</div>

+ 75
- 77
doxygen/html/rf__task_8h_source.html View File

@@ -75,85 +75,83 @@ $(function() {
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;{</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">struct </span>task_base_t</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; task_base_t() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">virtual</span> ~task_base_t();</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">friend</span> scheduler_t;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; counted_ptr&lt;state_base_t&gt; _state;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; };</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="comment">//----------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">struct </span>task_t</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; {</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; task_t();</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">virtual</span> ~task_t();</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keyword">class</span> = std::<span class="keywordtype">void</span>_t&lt;&gt;&gt;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="structresumef_1_1task__t.html"> 34</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1task__t.html">task_t</a>;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty&gt;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1task__t.html">task_t</a>&lt;_Ty, std::void_t&lt;traits::is_future&lt;std::remove_reference_t&lt;_Ty&gt;&gt;&gt;&gt; : <span class="keyword">public</span> task_base_t</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">using</span> future_type = std::remove_reference_t&lt;_Ty&gt;;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">using</span> value_type = <span class="keyword">typename</span> future_type::value_type;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">using</span> state_type = <a class="code" href="structresumef_1_1state__t.html">state_t&lt;value_type&gt;</a>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="structresumef_1_1task__t.html">task_t</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="structresumef_1_1task__t.html">task_t</a>(future_type&amp; f)</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; initialize(f);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> initialize(future_type&amp; f)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; _state = f._state.get();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; };</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty&gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">struct </span>task_t&lt;generator_t&lt;_Ty&gt;&gt; : <span class="keyword">public</span> task_base_t</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">using</span> value_type = _Ty;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">using</span> future_type = generator_t&lt;value_type&gt;;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">using</span> state_type = state_generator_t;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; task_t() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; task_t(future_type&amp; f)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; initialize(f);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> initialize(future_type&amp; f)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; _state = f.detach_state();</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//----------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">//ctx_task_t接受的是一个&#39;函数对象&#39;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//这个&#39;函数对象&#39;被调用后,返回generator&lt;_Ty&gt;/future_t&lt;_Ty&gt;类型</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">//然后&#39;函数对象&#39;作为异步执行的上下文状态保存起来</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ctx&gt;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">struct </span>ctx_task_t : <span class="keyword">public</span> task_t&lt;remove_cvref_t&lt;decltype(std::declval&lt;_Ctx&gt;()())&gt;&gt;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">using</span> context_type = _Ctx;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; context_type _context;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ctx_task_t(context_type ctx)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; : _context(std::move(ctx))</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; decltype(<span class="keyword">auto</span>) f = _context();</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; this-&gt;initialize(f);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; };</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">friend</span> scheduler_t;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; counted_ptr&lt;state_base_t&gt; _state;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; };</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">//----------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keyword">class</span> = std::<span class="keywordtype">void</span>_t&lt;&gt;&gt;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">struct </span>task_impl_t;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty&gt;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">struct </span>task_impl_t&lt;_Ty, std::void_t&lt;traits::is_future&lt;std::remove_reference_t&lt;_Ty&gt;&gt;&gt;&gt; : <span class="keyword">public</span> task_t</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">using</span> future_type = std::remove_reference_t&lt;_Ty&gt;;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">using</span> value_type = <span class="keyword">typename</span> future_type::value_type;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">using</span> state_type = state_t&lt;value_type&gt;;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; task_impl_t() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; task_impl_t(future_type&amp; f)</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; initialize(f);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> initialize(future_type&amp; f)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; _state = f._state.get();</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; };</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty&gt;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">struct </span>task_impl_t&lt;generator_t&lt;_Ty&gt;&gt; : <span class="keyword">public</span> task_t</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">using</span> value_type = _Ty;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">using</span> future_type = generator_t&lt;value_type&gt;;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">using</span> state_type = state_generator_t;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; task_impl_t() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; task_impl_t(future_type&amp; f)</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; initialize(f);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> initialize(future_type&amp; f)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; _state = f.detach_state();</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; };</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">//----------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//ctx_task_t接受的是一个&#39;函数对象&#39;</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//这个&#39;函数对象&#39;被调用后,返回generator&lt;_Ty&gt;/future_t&lt;_Ty&gt;类型</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">//然后&#39;函数对象&#39;作为异步执行的上下文状态保存起来</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ctx&gt;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">struct </span>task_ctx_impl_t : <span class="keyword">public</span> task_impl_t&lt;remove_cvref_t&lt;decltype(std::declval&lt;_Ctx&gt;()())&gt;&gt;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">using</span> context_type = _Ctx;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; context_type _context;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; task_ctx_impl_t(context_type ctx)</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; : _context(std::move(ctx))</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; decltype(<span class="keyword">auto</span>) f = _context();</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; this-&gt;initialize(f);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; };</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructresumef_1_1state__t_html"><div class="ttname"><a href="structresumef_1_1state__t.html">resumef::state_t</a></div><div class="ttdoc">专用于future_t&lt;&gt;的state类。</div><div class="ttdef"><b>Definition:</b> state.h:217</div></div>
<div class="ttc" id="astructresumef_1_1task__t_html"><div class="ttname"><a href="structresumef_1_1task__t.html">resumef::task_t</a></div><div class="ttdoc">协程任务类。</div><div class="ttdef"><b>Definition:</b> rf_task.h:34</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者 &#160;<a href="http://www.doxygen.org/index.html">

+ 71
- 71
doxygen/html/scheduler_8h_source.html View File

@@ -79,7 +79,7 @@ $(function() {
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keyword">using</span> <a class="code" href="structresumef_1_1counted__ptr.html">state_sptr</a> = <a class="code" href="structresumef_1_1counted__ptr.html">counted_ptr&lt;state_base_t&gt;</a>;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">using</span> state_vector = std::vector&lt;state_sptr&gt;;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">using</span> <a class="code" href="structresumef_1_1spinlock.html">lock_type</a> = <a class="code" href="structresumef_1_1spinlock.html">spinlock</a>;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">using</span> task_dictionary_type = std::unordered_map&lt;state_base_t*, std::unique_ptr&lt;task_base_t&gt;&gt;;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">using</span> task_dictionary_type = std::unordered_map&lt;state_base_t*, std::unique_ptr&lt;task_t&gt;&gt;;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">mutable</span> <a class="code" href="structresumef_1_1spinlock.html">spinlock</a> _lock_running;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; state_vector _runing_states;</div>
@@ -90,7 +90,7 @@ $(function() {
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; timer_mgr_ptr _timer;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">void</span> new_task(task_base_t* task);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; task_t* new_task(task_t* task);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">//void cancel_all_task_();</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc">run_one_batch</a>();</div>
@@ -99,85 +99,85 @@ $(function() {
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">//void break_all();</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>_Ty</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; COMMA_RESUMEF_ENABLE_IF(traits::is_callable_v&lt;_Ty&gt; || traits::is_future_v&lt;_Ty&gt; || traits::is_generator_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; RESUMEF_REQUIRES(traits::is_callable_v&lt;_Ty&gt; || traits::is_future_v&lt;_Ty&gt; || traits::is_generator_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec"> 60</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">operator + </a>(_Ty&amp;&amp; coro)</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> constexpr (traits::is_callable_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; new_task(<span class="keyword">new</span> ctx_task_t&lt;_Ty&gt;(coro));</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; new_task(<span class="keyword">new</span> <a class="code" href="structresumef_1_1task__t.html">task_t&lt;_Ty&gt;</a>(coro));</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585"> 75</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">empty</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; scoped_lock&lt;spinlock, spinlock&gt; __guard(_lock_ready, _lock_running);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> _ready_task.empty() &amp;&amp; _runing_states.empty() &amp;&amp; _timer-&gt;empty();</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22"> 84</a></span>&#160; <a class="code" href="structresumef_1_1timer__manager.html">timer_manager</a>* <a class="code" href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22">timer</a>() const noexcept</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> _timer.get();</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> add_generator(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> del_final(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; std::unique_ptr&lt;task_base_t&gt; del_switch(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">void</span> add_switch(std::unique_ptr&lt;task_base_t&gt; task);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>();</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; ~<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>();</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>(<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp; operator = (<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>(<span class="keyword">const</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">static</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a> g_scheduler;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; };</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="structresumef_1_1local__scheduler__t.html"> 117</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>();</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a> &amp; sch);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec">~local_scheduler_t</a>();</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp; operator = (<a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<span class="keyword">const</span> <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>* _scheduler_ptr;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; };</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>_Ty</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; COMMA_RESUMEF_ENABLE_IF(traits::is_callable_v&lt;_Ty&gt; || traits::is_future_v&lt;_Ty&gt; || traits::is_generator_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &gt;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; RESUMEF_REQUIRES(traits::is_callable_v&lt;_Ty&gt; || traits::is_future_v&lt;_Ty&gt; || traits::is_generator_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7"> 61</a></span>&#160; task_t* <a class="code" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">operator + </a>(_Ty&amp;&amp; coro)</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> constexpr (traits::is_callable_v&lt;_Ty&gt;)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> new_task(<span class="keyword">new</span> task_ctx_impl_t&lt;_Ty&gt;(coro));</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> new_task(<span class="keyword">new</span> task_impl_t&lt;_Ty&gt;(coro));</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585"> 76</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">empty</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; scoped_lock&lt;spinlock, spinlock&gt; __guard(_lock_ready, _lock_running);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> _ready_task.empty() &amp;&amp; _runing_states.empty() &amp;&amp; _timer-&gt;empty();</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22"> 85</a></span>&#160; <a class="code" href="structresumef_1_1timer__manager.html">timer_manager</a>* <a class="code" href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22">timer</a>() const noexcept</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> _timer.get();</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor">#ifndef DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> add_generator(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> del_final(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; std::unique_ptr&lt;task_t&gt; del_switch(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">void</span> add_switch(std::unique_ptr&lt;task_t&gt; task);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; task_t* find_task(<a class="code" href="structresumef_1_1state__base__t.html">state_base_t</a>* sptr) <span class="keyword">const</span> noexcept;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>();</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; ~<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>();</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>(<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp; operator = (<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>(<span class="keyword">const</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">static</span> <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a> g_scheduler;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#endif //DOXYGEN_SKIP_PROPERTY</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; };</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structresumef_1_1local__scheduler__t.html"> 119</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>();</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a> &amp; sch);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec">~local_scheduler_t</a>();</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp; operator = (<a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;&amp; right_) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">local_scheduler_t</a>(<span class="keyword">const</span> <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="structresumef_1_1local__scheduler__t.html">local_scheduler_t</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="structresumef_1_1scheduler__t.html">scheduler_t</a>* _scheduler_ptr;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; };</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructresumef_1_1timer__manager_html"><div class="ttname"><a href="structresumef_1_1timer__manager.html">resumef::timer_manager</a></div><div class="ttdoc">定时器管理器。</div><div class="ttdef"><b>Definition:</b> timer.h:84</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html"><div class="ttname"><a href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></div><div class="ttdoc">协程调度器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:10</div></div>
<div class="ttc" id="astructresumef_1_1local__scheduler__t_html_af4c4cd1c6626930ccf891368e3f3e6ec"><div class="ttname"><a href="structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec">resumef::local_scheduler_t::~local_scheduler_t</a></div><div class="ttdeci">~local_scheduler_t()</div><div class="ttdoc">如果当前线程绑定的调度器由local_scheduler_t所创建,则会销毁调度器,并解绑线程。</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a9d22640803eb9397cb844e532f4c8585"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">resumef::scheduler_t::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">判断所有协程是否运行完毕。</div><div class="ttdef"><b>Definition:</b> scheduler.h:75</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a9d22640803eb9397cb844e532f4c8585"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">resumef::scheduler_t::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">判断所有协程是否运行完毕。</div><div class="ttdef"><b>Definition:</b> scheduler.h:76</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a8b396c23730b15afd345328b96dbe1cc"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc">resumef::scheduler_t::run_one_batch</a></div><div class="ttdeci">void run_one_batch()</div><div class="ttdoc">运行一批准备妥当的协程。</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_ae4ef2589ef2ce0335107d579b9e244a8"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8">resumef::scheduler_t::run_until_notask</a></div><div class="ttdeci">void run_until_notask()</div><div class="ttdoc">循环运行所有的协程,直到所有协程都运行完成。</div></div>
<div class="ttc" id="astructresumef_1_1state__base__t_html"><div class="ttname"><a href="structresumef_1_1state__base__t.html">resumef::state_base_t</a></div><div class="ttdoc">state基类,state用于在协程的promise和future之间共享数据。</div><div class="ttdef"><b>Definition:</b> state.h:8</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a1d369882e156db4efc1a1693acfc0e22"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22">resumef::scheduler_t::timer</a></div><div class="ttdeci">timer_manager * timer() const noexcept</div><div class="ttdoc">获得定时管理器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:84</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a1d369882e156db4efc1a1693acfc0e22"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22">resumef::scheduler_t::timer</a></div><div class="ttdeci">timer_manager * timer() const noexcept</div><div class="ttdoc">获得定时管理器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:85</div></div>
<div class="ttc" id="astructresumef_1_1counted__ptr_html"><div class="ttname"><a href="structresumef_1_1counted__ptr.html">resumef::counted_ptr</a></div><div class="ttdoc">专用与state的智能计数指针,通过管理state内嵌的引用计数来管理state的生存期。</div><div class="ttdef"><b>Definition:</b> counted_ptr.h:9</div></div>
<div class="ttc" id="astructresumef_1_1spinlock_html"><div class="ttname"><a href="structresumef_1_1spinlock.html">resumef::spinlock</a></div><div class="ttdoc">一个自旋锁实现。</div><div class="ttdef"><b>Definition:</b> spinlock.h:14</div></div>
<div class="ttc" id="astructresumef_1_1local__scheduler__t_html"><div class="ttname"><a href="structresumef_1_1local__scheduler__t.html">resumef::local_scheduler_t</a></div><div class="ttdoc">创建一个线程相关的调度器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:117</div></div>
<div class="ttc" id="astructresumef_1_1local__scheduler__t_html"><div class="ttname"><a href="structresumef_1_1local__scheduler__t.html">resumef::local_scheduler_t</a></div><div class="ttdoc">创建一个线程相关的调度器。</div><div class="ttdef"><b>Definition:</b> scheduler.h:119</div></div>
<div class="ttc" id="astructresumef_1_1local__scheduler__t_html_a05f60c654c1f7390682cab7cdcddb112"><div class="ttname"><a href="structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112">resumef::local_scheduler_t::local_scheduler_t</a></div><div class="ttdeci">local_scheduler_t()</div><div class="ttdoc">尽可能的创建一个线程相关的调度器。</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_a449d34ba6a8e28284f2b02089cb7dcec"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">resumef::scheduler_t::operator+</a></div><div class="ttdeci">void operator+(_Ty &amp;&amp;coro)</div><div class="ttdoc">将一个协程加入到调度器里开始运行。</div><div class="ttdef"><b>Definition:</b> scheduler.h:60</div></div>
<div class="ttc" id="astructresumef_1_1task__t_html"><div class="ttname"><a href="structresumef_1_1task__t.html">resumef::task_t</a></div><div class="ttdoc">协程任务类。</div><div class="ttdef"><b>Definition:</b> rf_task.h:34</div></div>
<div class="ttc" id="astructresumef_1_1scheduler__t_html_afac99b67f0686e836fafb1e2f0bd41b7"><div class="ttname"><a href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">resumef::scheduler_t::operator+</a></div><div class="ttdeci">task_t * operator+(_Ty &amp;&amp;coro)</div><div class="ttdoc">将一个协程加入到调度器里开始运行。</div><div class="ttdef"><b>Definition:</b> scheduler.h:61</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者 &#160;<a href="http://www.doxygen.org/index.html">

+ 2
- 2
doxygen/html/search/all_10.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['yield_72',['yield',['../structresumef_1_1yield__awaitor.html#a25aa400aefa4bb8c2b61a190b0a7cdda',1,'resumef::yield_awaitor']]],
['yield_5fawaitor_73',['yield_awaitor',['../structresumef_1_1yield__awaitor.html',1,'resumef']]]
['yield_74',['yield',['../structresumef_1_1yield__awaitor.html#a25aa400aefa4bb8c2b61a190b0a7cdda',1,'resumef::yield_awaitor']]],
['yield_5fawaitor_75',['yield_awaitor',['../structresumef_1_1yield__awaitor.html',1,'resumef']]]
];

+ 4
- 4
doxygen/html/search/all_11.js View File

@@ -1,7 +1,7 @@
var searchData=
[
['_7ebatch_5flock_5ft_74',['~batch_lock_t',['../classresumef_1_1batch__lock__t.html#a661dad263c32b25b6bcc92c0d7b73830',1,'resumef::batch_lock_t']]],
['_7ecounted_5fptr_75',['~counted_ptr',['../structresumef_1_1counted__ptr.html#a825f25bf4975e015f859e8ba29bd85b6',1,'resumef::counted_ptr']]],
['_7eevent_5ft_76',['~event_t',['../structresumef_1_1event__t.html#af742aa0454758c3def349cacae86c229',1,'resumef::event_t']]],
['_7elocal_5fscheduler_5ft_77',['~local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec',1,'resumef::local_scheduler_t']]]
['_7ebatch_5flock_5ft_76',['~batch_lock_t',['../classresumef_1_1batch__lock__t.html#a661dad263c32b25b6bcc92c0d7b73830',1,'resumef::batch_lock_t']]],
['_7ecounted_5fptr_77',['~counted_ptr',['../structresumef_1_1counted__ptr.html#a825f25bf4975e015f859e8ba29bd85b6',1,'resumef::counted_ptr']]],
['_7eevent_5ft_78',['~event_t',['../structresumef_1_1event__t.html#af742aa0454758c3def349cacae86c229',1,'resumef::event_t']]],
['_7elocal_5fscheduler_5ft_79',['~local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec',1,'resumef::local_scheduler_t']]]
];

+ 2
- 1
doxygen/html/search/all_3.js View File

@@ -9,5 +9,6 @@ var searchData=
['counted_5fptr_3c_20detail_3a_3astate_5fmutex_5ft_20_3e_12',['counted_ptr&lt; detail::state_mutex_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20resumef_3a_3astate_5ft_20_3e_13',['counted_ptr&lt; resumef::state_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20state_5ftype_20_3e_14',['counted_ptr&lt; state_type &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['current_5fscheduler_15',['current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a',1,'resumef::get_current_scheduler_awaitor']]]
['current_5fscheduler_15',['current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a',1,'resumef::get_current_scheduler_awaitor']]],
['current_5ftask_16',['current_task',['../structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282',1,'resumef::get_current_task_awaitor']]]
];

+ 2
- 2
doxygen/html/search/all_4.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['empty_16',['empty',['../structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585',1,'resumef::scheduler_t']]],
['event_5ft_17',['event_t',['../structresumef_1_1event__t.html',1,'resumef::event_t'],['../structresumef_1_1event__t.html#a5ae54675783d984c3defd7b2093c91a1',1,'resumef::event_t::event_t(bool initially=false)'],['../structresumef_1_1event__t.html#ab3a49adfb8c1cfcfa606cca3148f946a',1,'resumef::event_t::event_t(std::adopt_lock_t)']]]
['empty_17',['empty',['../structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585',1,'resumef::scheduler_t']]],
['event_5ft_18',['event_t',['../structresumef_1_1event__t.html',1,'resumef::event_t'],['../structresumef_1_1event__t.html#a5ae54675783d984c3defd7b2093c91a1',1,'resumef::event_t::event_t(bool initially=false)'],['../structresumef_1_1event__t.html#ab3a49adfb8c1cfcfa606cca3148f946a',1,'resumef::event_t::event_t(std::adopt_lock_t)']]]
];

+ 2
- 2
doxygen/html/search/all_5.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['future_5ft_18',['future_t',['../structresumef_1_1future__t.html',1,'resumef']]],
['future_5ft_3c_20t_20_3e_19',['future_t&lt; T &gt;',['../structresumef_1_1future__t.html',1,'resumef']]]
['future_5ft_19',['future_t',['../structresumef_1_1future__t.html',1,'resumef']]],
['future_5ft_3c_20t_20_3e_20',['future_t&lt; T &gt;',['../structresumef_1_1future__t.html',1,'resumef']]]
];

+ 9
- 7
doxygen/html/search/all_6.js View File

@@ -1,10 +1,12 @@
var searchData=
[
['generator_5ft_20',['generator_t',['../structresumef_1_1generator__t.html',1,'resumef']]],
['get_21',['get',['../structresumef_1_1counted__ptr.html#a9f6757dac685431f2ae561a58c502d1f',1,'resumef::counted_ptr']]],
['get_5fcurrent_5fscheduler_22',['get_current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf',1,'resumef::get_current_scheduler_awaitor']]],
['get_5fcurrent_5fscheduler_5fawaitor_23',['get_current_scheduler_awaitor',['../structresumef_1_1get__current__scheduler__awaitor.html',1,'resumef']]],
['get_5ffuture_24',['get_future',['../structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d',1,'resumef::awaitable_impl_t']]],
['get_5froot_5fstate_25',['get_root_state',['../structresumef_1_1get__root__state__awaitor.html#adffac6b1ec6065c68dc345aa6fff5e49',1,'resumef::get_root_state_awaitor']]],
['get_5froot_5fstate_5fawaitor_26',['get_root_state_awaitor',['../structresumef_1_1get__root__state__awaitor.html',1,'resumef']]]
['generator_5ft_21',['generator_t',['../structresumef_1_1generator__t.html',1,'resumef']]],
['get_22',['get',['../structresumef_1_1counted__ptr.html#a9f6757dac685431f2ae561a58c502d1f',1,'resumef::counted_ptr']]],
['get_5fcurrent_5fscheduler_23',['get_current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf',1,'resumef::get_current_scheduler_awaitor']]],
['get_5fcurrent_5fscheduler_5fawaitor_24',['get_current_scheduler_awaitor',['../structresumef_1_1get__current__scheduler__awaitor.html',1,'resumef']]],
['get_5fcurrent_5ftask_25',['get_current_task',['../structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb',1,'resumef::get_current_task_awaitor']]],
['get_5fcurrent_5ftask_5fawaitor_26',['get_current_task_awaitor',['../structresumef_1_1get__current__task__awaitor.html',1,'resumef']]],
['get_5ffuture_27',['get_future',['../structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d',1,'resumef::awaitable_impl_t']]],
['get_5froot_5fstate_28',['get_root_state',['../structresumef_1_1get__root__state__awaitor.html#adffac6b1ec6065c68dc345aa6fff5e49',1,'resumef::get_root_state_awaitor']]],
['get_5froot_5fstate_5fawaitor_29',['get_root_state_awaitor',['../structresumef_1_1get__root__state__awaitor.html',1,'resumef']]]
];

+ 2
- 2
doxygen/html/search/all_7.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['local_5fscheduler_5ft_27',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html',1,'resumef::local_scheduler_t'],['../structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112',1,'resumef::local_scheduler_t::local_scheduler_t()'],['../structresumef_1_1local__scheduler__t.html#a0443e2872feef9f1893087826e7fa7e2',1,'resumef::local_scheduler_t::local_scheduler_t(scheduler_t &amp;sch)']]],
['lock_28',['lock',['../structresumef_1_1mutex__t.html#a15c654948f47113fc92223a811d60090',1,'resumef::mutex_t::lock() const noexcept'],['../structresumef_1_1mutex__t.html#aad074e28785741eb1615d3126da6088a',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag) const noexcept'],['../structresumef_1_1mutex__t.html#a3442f7c56bed34e086bd5bd41e4a9c5a',1,'resumef::mutex_t::lock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#ae2aecf303188c9a8122e3fde4fb525fd',1,'resumef::mutex_t::lock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ae7f95d070a020cfeaf99684a06c5fd47',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ad7ba090cf3188eaa738d4e37a4c6ab7a',1,'resumef::mutex_t::lock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#abfbfd653a04d3c3b3d88a5bdcaba4664',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#ae313002e0db9c20b32d386e4eb91c372',1,'resumef::spinlock::lock()']]]
['local_5fscheduler_5ft_30',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html',1,'resumef::local_scheduler_t'],['../structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112',1,'resumef::local_scheduler_t::local_scheduler_t()'],['../structresumef_1_1local__scheduler__t.html#a0443e2872feef9f1893087826e7fa7e2',1,'resumef::local_scheduler_t::local_scheduler_t(scheduler_t &amp;sch)']]],
['lock_31',['lock',['../structresumef_1_1mutex__t.html#a15c654948f47113fc92223a811d60090',1,'resumef::mutex_t::lock() const noexcept'],['../structresumef_1_1mutex__t.html#aad074e28785741eb1615d3126da6088a',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag) const noexcept'],['../structresumef_1_1mutex__t.html#a3442f7c56bed34e086bd5bd41e4a9c5a',1,'resumef::mutex_t::lock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#ae2aecf303188c9a8122e3fde4fb525fd',1,'resumef::mutex_t::lock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ae7f95d070a020cfeaf99684a06c5fd47',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ad7ba090cf3188eaa738d4e37a4c6ab7a',1,'resumef::mutex_t::lock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#abfbfd653a04d3c3b3d88a5bdcaba4664',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#ae313002e0db9c20b32d386e4eb91c372',1,'resumef::spinlock::lock()']]]
];

+ 2
- 2
doxygen/html/search/all_8.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['mutex_5fexception_29',['mutex_exception',['../structresumef_1_1mutex__exception.html',1,'resumef']]],
['mutex_5ft_30',['mutex_t',['../structresumef_1_1mutex__t.html',1,'resumef::mutex_t'],['../structresumef_1_1mutex__t.html#a597d0ca4a0f0d9963d0578afb5aa1ecf',1,'resumef::mutex_t::mutex_t()']]]
['mutex_5fexception_32',['mutex_exception',['../structresumef_1_1mutex__exception.html',1,'resumef']]],
['mutex_5ft_33',['mutex_t',['../structresumef_1_1mutex__t.html',1,'resumef::mutex_t'],['../structresumef_1_1mutex__t.html#a597d0ca4a0f0d9963d0578afb5aa1ecf',1,'resumef::mutex_t::mutex_t()']]]
];

+ 5
- 5
doxygen/html/search/all_9.js View File

@@ -1,8 +1,8 @@
var searchData=
[
['operator_20co_5fawait_31',['operator co_await',['../structresumef_1_1channel__t.html#a9143771fbfda1d5996e89abc0eb2771e',1,'resumef::channel_t::operator co_await()'],['../structresumef_1_1event__t.html#a9656c785d3c1c1d57560137894aa1be3',1,'resumef::event_t::operator co_await()'],['../structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de',1,'resumef::mutex_t::operator co_await()']]],
['operator_2b_32',['operator+',['../structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec',1,'resumef::scheduler_t']]],
['operator_2d_3e_33',['operator-&gt;',['../structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba',1,'resumef::counted_ptr']]],
['operator_3c_3c_34',['operator&lt;&lt;',['../structresumef_1_1channel__t.html#a8554b84ad37f013471f2c5d2da745887',1,'resumef::channel_t']]],
['operator_3d_35',['operator=',['../structresumef_1_1counted__ptr.html#a8a5bff0a86d41b1ab50f817be770573a',1,'resumef::counted_ptr::operator=(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#af6a044ce1cdecc3a2650f16f445de2d4',1,'resumef::counted_ptr::operator=(counted_ptr &amp;&amp;cp) noexcept'],['../classresumef_1_1batch__lock__t.html#aabbfeb513ac907b9c8caf6fda9a356d4',1,'resumef::batch_lock_t::operator=(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a057618d5a806ffe6fd106f851082f12e',1,'resumef::batch_lock_t::operator=(batch_lock_t &amp;&amp;_Right)']]]
['operator_20co_5fawait_34',['operator co_await',['../structresumef_1_1channel__t.html#a9143771fbfda1d5996e89abc0eb2771e',1,'resumef::channel_t::operator co_await()'],['../structresumef_1_1event__t.html#a9656c785d3c1c1d57560137894aa1be3',1,'resumef::event_t::operator co_await()'],['../structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de',1,'resumef::mutex_t::operator co_await()']]],
['operator_2b_35',['operator+',['../structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7',1,'resumef::scheduler_t']]],
['operator_2d_3e_36',['operator-&gt;',['../structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba',1,'resumef::counted_ptr']]],
['operator_3c_3c_37',['operator&lt;&lt;',['../structresumef_1_1channel__t.html#a8554b84ad37f013471f2c5d2da745887',1,'resumef::channel_t']]],
['operator_3d_38',['operator=',['../structresumef_1_1counted__ptr.html#a8a5bff0a86d41b1ab50f817be770573a',1,'resumef::counted_ptr::operator=(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#af6a044ce1cdecc3a2650f16f445de2d4',1,'resumef::counted_ptr::operator=(counted_ptr &amp;&amp;cp) noexcept'],['../classresumef_1_1batch__lock__t.html#aabbfeb513ac907b9c8caf6fda9a356d4',1,'resumef::batch_lock_t::operator=(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a057618d5a806ffe6fd106f851082f12e',1,'resumef::batch_lock_t::operator=(batch_lock_t &amp;&amp;_Right)']]]
];

+ 6
- 6
doxygen/html/search/all_a.js View File

@@ -1,9 +1,9 @@
var searchData=
[
['read_36',['read',['../structresumef_1_1channel__t.html#a4ad0246bbfc50513d5a97227905f73c5',1,'resumef::channel_t']]],
['reset_37',['reset',['../structresumef_1_1counted__ptr.html#aa33f9e7d3ee850bed6dbefd40252a899',1,'resumef::counted_ptr::reset()'],['../structresumef_1_1event__t.html#a8da187ffff9c6aee7e9bad6d97af9f4a',1,'resumef::event_t::reset()']]],
['rf_5ftask_5ft_38',['rf_task_t',['../classasio_1_1rf__task__t.html',1,'asio']]],
['root_5fstate_39',['root_state',['../structresumef_1_1get__root__state__awaitor.html#ae6ad15614c2597a714b84bfc3e369b8a',1,'resumef::get_root_state_awaitor']]],
['run_5fone_5fbatch_40',['run_one_batch',['../structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc',1,'resumef::scheduler_t']]],
['run_5funtil_5fnotask_41',['run_until_notask',['../structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8',1,'resumef::scheduler_t']]]
['read_39',['read',['../structresumef_1_1channel__t.html#a4ad0246bbfc50513d5a97227905f73c5',1,'resumef::channel_t']]],
['reset_40',['reset',['../structresumef_1_1counted__ptr.html#aa33f9e7d3ee850bed6dbefd40252a899',1,'resumef::counted_ptr::reset()'],['../structresumef_1_1event__t.html#a8da187ffff9c6aee7e9bad6d97af9f4a',1,'resumef::event_t::reset()']]],
['rf_5ftask_5ft_41',['rf_task_t',['../classasio_1_1rf__task__t.html',1,'asio']]],
['root_5fstate_42',['root_state',['../structresumef_1_1get__root__state__awaitor.html#ae6ad15614c2597a714b84bfc3e369b8a',1,'resumef::get_root_state_awaitor']]],
['run_5fone_5fbatch_43',['run_one_batch',['../structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc',1,'resumef::scheduler_t']]],
['run_5funtil_5fnotask_44',['run_until_notask',['../structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8',1,'resumef::scheduler_t']]]
];

+ 11
- 11
doxygen/html/search/all_b.js View File

@@ -1,14 +1,14 @@
var searchData=
[
['scheduler_5ft_42',['scheduler_t',['../structresumef_1_1scheduler__t.html',1,'resumef']]],
['set_5fexception_43',['set_exception',['../structresumef_1_1awaitable__impl__t.html#a22f1adeb8ecfd2c078f620dbc7c368a1',1,'resumef::awaitable_impl_t']]],
['set_5fvalue_44',['set_value',['../structresumef_1_1awaitable__t.html#af66d4b4a3ba5339873b2dd8353ae6db3',1,'resumef::awaitable_t']]],
['signal_45',['signal',['../structresumef_1_1event__t.html#ab9500bb2438c27adb4b34988eaa04ff9',1,'resumef::event_t']]],
['signal_5fall_46',['signal_all',['../structresumef_1_1event__t.html#aac7bf6f81982126225125354769ad695',1,'resumef::event_t']]],
['spinlock_47',['spinlock',['../structresumef_1_1spinlock.html',1,'resumef::spinlock'],['../structresumef_1_1spinlock.html#a32730a90789147297f9777fe866a224f',1,'resumef::spinlock::spinlock()']]],
['state_5fbase_5ft_48',['state_base_t',['../structresumef_1_1state__base__t.html',1,'resumef']]],
['state_5ffuture_5ft_49',['state_future_t',['../structresumef_1_1state__future__t.html',1,'resumef']]],
['state_5fgenerator_5ft_50',['state_generator_t',['../structresumef_1_1state__generator__t.html',1,'resumef']]],
['state_5ft_51',['state_t',['../structresumef_1_1state__t.html',1,'resumef']]],
['switch_5fscheduler_5fawaitor_52',['switch_scheduler_awaitor',['../structresumef_1_1switch__scheduler__awaitor.html',1,'resumef']]]
['scheduler_5ft_45',['scheduler_t',['../structresumef_1_1scheduler__t.html',1,'resumef']]],
['set_5fexception_46',['set_exception',['../structresumef_1_1awaitable__impl__t.html#a22f1adeb8ecfd2c078f620dbc7c368a1',1,'resumef::awaitable_impl_t']]],
['set_5fvalue_47',['set_value',['../structresumef_1_1awaitable__t.html#af66d4b4a3ba5339873b2dd8353ae6db3',1,'resumef::awaitable_t']]],
['signal_48',['signal',['../structresumef_1_1event__t.html#ab9500bb2438c27adb4b34988eaa04ff9',1,'resumef::event_t']]],
['signal_5fall_49',['signal_all',['../structresumef_1_1event__t.html#aac7bf6f81982126225125354769ad695',1,'resumef::event_t']]],
['spinlock_50',['spinlock',['../structresumef_1_1spinlock.html',1,'resumef::spinlock'],['../structresumef_1_1spinlock.html#a32730a90789147297f9777fe866a224f',1,'resumef::spinlock::spinlock()']]],
['state_5fbase_5ft_51',['state_base_t',['../structresumef_1_1state__base__t.html',1,'resumef']]],
['state_5ffuture_5ft_52',['state_future_t',['../structresumef_1_1state__future__t.html',1,'resumef']]],
['state_5fgenerator_5ft_53',['state_generator_t',['../structresumef_1_1state__generator__t.html',1,'resumef']]],
['state_5ft_54',['state_t',['../structresumef_1_1state__t.html',1,'resumef']]],
['switch_5fscheduler_5fawaitor_55',['switch_scheduler_awaitor',['../structresumef_1_1switch__scheduler__awaitor.html',1,'resumef']]]
];

+ 9
- 10
doxygen/html/search/all_c.js View File

@@ -1,13 +1,12 @@
var searchData=
[
['task_5ft_53',['task_t',['../structresumef_1_1task__t.html',1,'resumef']]],
['throw_5fexception_54',['throw_exception',['../structresumef_1_1awaitable__impl__t.html#a2f7b2ef525186c9b7512dceb2453bebe',1,'resumef::awaitable_impl_t']]],
['timer_55',['timer',['../structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22',1,'resumef::scheduler_t']]],
['timer_5fcanceled_5fexception_56',['timer_canceled_exception',['../structresumef_1_1timer__canceled__exception.html',1,'resumef']]],
['timer_5fhandler_57',['timer_handler',['../structresumef_1_1timer__handler.html',1,'resumef']]],
['timer_5fmanager_58',['timer_manager',['../structresumef_1_1timer__manager.html',1,'resumef']]],
['timer_5ftarget_59',['timer_target',['../structresumef_1_1detail_1_1timer__target.html',1,'resumef::detail']]],
['try_5flock_60',['try_lock',['../structresumef_1_1mutex__t.html#a2844d5df6562c153bc5b32d1720efb30',1,'resumef::mutex_t::try_lock() const noexcept'],['../structresumef_1_1mutex__t.html#a1dd128870c1fdcc7261ef0fa63e12254',1,'resumef::mutex_t::try_lock(void *unique_address) const'],['../structresumef_1_1spinlock.html#a62a6841e933ee7845a9ba42765a1b5e3',1,'resumef::spinlock::try_lock()']]],
['try_5flock_5ffor_61',['try_lock_for',['../structresumef_1_1mutex__t.html#afca20661d92d6acac34b324cab774310',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt) const noexcept'],['../structresumef_1_1mutex__t.html#a15c6518dafb6c2cf52a0b0dbdd90ae7b',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt, void *unique_address)']]],
['try_5flock_5funtil_62',['try_lock_until',['../structresumef_1_1mutex__t.html#ada9a310ff364fa8b1ee78dc2f799a8a5',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp) const noexcept'],['../structresumef_1_1mutex__t.html#aec072ad5fd0d6b688a3866ee9f1dc791',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp, void *unique_address)']]]
['throw_5fexception_56',['throw_exception',['../structresumef_1_1awaitable__impl__t.html#a2f7b2ef525186c9b7512dceb2453bebe',1,'resumef::awaitable_impl_t']]],
['timer_57',['timer',['../structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22',1,'resumef::scheduler_t']]],
['timer_5fcanceled_5fexception_58',['timer_canceled_exception',['../structresumef_1_1timer__canceled__exception.html',1,'resumef']]],
['timer_5fhandler_59',['timer_handler',['../structresumef_1_1timer__handler.html',1,'resumef']]],
['timer_5fmanager_60',['timer_manager',['../structresumef_1_1timer__manager.html',1,'resumef']]],
['timer_5ftarget_61',['timer_target',['../structresumef_1_1detail_1_1timer__target.html',1,'resumef::detail']]],
['try_5flock_62',['try_lock',['../structresumef_1_1mutex__t.html#a2844d5df6562c153bc5b32d1720efb30',1,'resumef::mutex_t::try_lock() const noexcept'],['../structresumef_1_1mutex__t.html#a1dd128870c1fdcc7261ef0fa63e12254',1,'resumef::mutex_t::try_lock(void *unique_address) const'],['../structresumef_1_1spinlock.html#a62a6841e933ee7845a9ba42765a1b5e3',1,'resumef::spinlock::try_lock()']]],
['try_5flock_5ffor_63',['try_lock_for',['../structresumef_1_1mutex__t.html#afca20661d92d6acac34b324cab774310',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt) const noexcept'],['../structresumef_1_1mutex__t.html#a15c6518dafb6c2cf52a0b0dbdd90ae7b',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt, void *unique_address)']]],
['try_5flock_5funtil_64',['try_lock_until',['../structresumef_1_1mutex__t.html#ada9a310ff364fa8b1ee78dc2f799a8a5',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp) const noexcept'],['../structresumef_1_1mutex__t.html#aec072ad5fd0d6b688a3866ee9f1dc791',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp, void *unique_address)']]]
];

+ 1
- 1
doxygen/html/search/all_d.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['unlock_63',['unlock',['../structresumef_1_1mutex__t.html#a430ec9f4b9bb1c5711b6ba7ef3a1ad99',1,'resumef::mutex_t::unlock() const noexcept'],['../structresumef_1_1mutex__t.html#abc858a566d0884726740557f930ec7db',1,'resumef::mutex_t::unlock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#a0bc0948ed9eab5e41518ff9c1a6327a3',1,'resumef::mutex_t::unlock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#a28defd5d64173ef3114a419f945adb3d',1,'resumef::mutex_t::unlock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#af6d49dc277c0719e282a9387ed3c35e9',1,'resumef::spinlock::unlock()'],['../classresumef_1_1batch__lock__t.html#abc72b35a9eef1bd6c39955d63cc8ce9c',1,'resumef::batch_lock_t::unlock()']]]
['unlock_65',['unlock',['../structresumef_1_1mutex__t.html#a430ec9f4b9bb1c5711b6ba7ef3a1ad99',1,'resumef::mutex_t::unlock() const noexcept'],['../structresumef_1_1mutex__t.html#abc858a566d0884726740557f930ec7db',1,'resumef::mutex_t::unlock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#a0bc0948ed9eab5e41518ff9c1a6327a3',1,'resumef::mutex_t::unlock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#a28defd5d64173ef3114a419f945adb3d',1,'resumef::mutex_t::unlock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#af6d49dc277c0719e282a9387ed3c35e9',1,'resumef::spinlock::unlock()'],['../classresumef_1_1batch__lock__t.html#abc72b35a9eef1bd6c39955d63cc8ce9c',1,'resumef::batch_lock_t::unlock()']]]
];

+ 1
- 1
doxygen/html/search/all_e.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['via_64',['via',['../structresumef_1_1switch__scheduler__awaitor.html#ad895f4414bfb91fde51ac735420246a9',1,'resumef::switch_scheduler_awaitor::via(scheduler_t &amp;sch) noexcept'],['../structresumef_1_1switch__scheduler__awaitor.html#a59f9ab7279d4aee22b69b93c86b209e7',1,'resumef::switch_scheduler_awaitor::via(scheduler_t *sch) noexcept']]]
['via_66',['via',['../structresumef_1_1switch__scheduler__awaitor.html#ad895f4414bfb91fde51ac735420246a9',1,'resumef::switch_scheduler_awaitor::via(scheduler_t &amp;sch) noexcept'],['../structresumef_1_1switch__scheduler__awaitor.html#a59f9ab7279d4aee22b69b93c86b209e7',1,'resumef::switch_scheduler_awaitor::via(scheduler_t *sch) noexcept']]]
];

+ 7
- 7
doxygen/html/search/all_f.js View File

@@ -1,10 +1,10 @@
var searchData=
[
['wait_65',['wait',['../structresumef_1_1event__t.html#a1231525d8406b1f69b563e84dc7fead7',1,'resumef::event_t']]],
['wait_5ffor_66',['wait_for',['../structresumef_1_1event__t.html#ac3d2ceb787ca321855731e40646d4112',1,'resumef::event_t']]],
['wait_5funtil_67',['wait_until',['../structresumef_1_1event__t.html#a083cda88807a10c4f68b134ce32c597b',1,'resumef::event_t']]],
['when_5f_68',['when_',['../structresumef_1_1when__.html',1,'resumef']]],
['when_5fall_69',['when_all',['../structresumef_1_1when__.html#a6ba9218688af965ccf6d4bd9e98b152a',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt; &gt;'],['../structresumef_1_1when__.html#a29810e8fe2efbfb395669971758182fe',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::declval&lt; _Iter &gt;())&gt; &gt; &gt;'],['../structresumef_1_1when__.html#a66d4fc83bbdbe36232615ff7d0459049',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Cont &amp;cont)'],['../structresumef_1_1when__.html#a1d453b444cfaa704cf7a1da01eed49b9',1,'resumef::when_::when_all(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt;&gt;'],['../structresumef_1_1when__.html#a9b8ec7229b5c7dd7c2ae58d3365799dc',1,'resumef::when_::when_all(_Iter begin, _Iter end) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*begin)&gt;&gt;&gt;'],['../structresumef_1_1when__.html#aa2a8218ff1eb6cb48fb981310a284b84',1,'resumef::when_::when_all(_Cont &amp;&amp;cont) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::begin(cont))&gt;&gt;&gt;']]],
['when_5fany_70',['when_any',['../structresumef_1_1when__.html#af4fe05b26abdab4ff00505ce56674ef9',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a5eb64c53feea7f37b643f9b9c3faf685',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a753478e5b7b3df202efc98c0274484e8',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Cont &amp;cont) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a4ec23495051e2b682f27ce0b3d527305',1,'resumef::when_::when_any(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a8595c1bc0659b67724654b6661537058',1,'resumef::when_::when_any(_Iter begin, _Iter end) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a0b9b2f88f5c8cd76dd8d1c70926cc029',1,'resumef::when_::when_any(_Cont &amp;&amp;cont) -&gt; future_t&lt; when_any_pair &gt;']]],
['write_71',['write',['../structresumef_1_1channel__t.html#a603d7e9a7e0d621292b5a3c340aaadc9',1,'resumef::channel_t']]]
['wait_67',['wait',['../structresumef_1_1event__t.html#a1231525d8406b1f69b563e84dc7fead7',1,'resumef::event_t']]],
['wait_5ffor_68',['wait_for',['../structresumef_1_1event__t.html#ac3d2ceb787ca321855731e40646d4112',1,'resumef::event_t']]],
['wait_5funtil_69',['wait_until',['../structresumef_1_1event__t.html#a083cda88807a10c4f68b134ce32c597b',1,'resumef::event_t']]],
['when_5f_70',['when_',['../structresumef_1_1when__.html',1,'resumef']]],
['when_5fall_71',['when_all',['../structresumef_1_1when__.html#a6ba9218688af965ccf6d4bd9e98b152a',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt; &gt;'],['../structresumef_1_1when__.html#a29810e8fe2efbfb395669971758182fe',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::declval&lt; _Iter &gt;())&gt; &gt; &gt;'],['../structresumef_1_1when__.html#a66d4fc83bbdbe36232615ff7d0459049',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Cont &amp;cont)'],['../structresumef_1_1when__.html#a1d453b444cfaa704cf7a1da01eed49b9',1,'resumef::when_::when_all(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt;&gt;'],['../structresumef_1_1when__.html#a9b8ec7229b5c7dd7c2ae58d3365799dc',1,'resumef::when_::when_all(_Iter begin, _Iter end) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*begin)&gt;&gt;&gt;'],['../structresumef_1_1when__.html#aa2a8218ff1eb6cb48fb981310a284b84',1,'resumef::when_::when_all(_Cont &amp;&amp;cont) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::begin(cont))&gt;&gt;&gt;']]],
['when_5fany_72',['when_any',['../structresumef_1_1when__.html#af4fe05b26abdab4ff00505ce56674ef9',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a5eb64c53feea7f37b643f9b9c3faf685',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a753478e5b7b3df202efc98c0274484e8',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Cont &amp;cont) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a4ec23495051e2b682f27ce0b3d527305',1,'resumef::when_::when_any(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a8595c1bc0659b67724654b6661537058',1,'resumef::when_::when_any(_Iter begin, _Iter end) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a0b9b2f88f5c8cd76dd8d1c70926cc029',1,'resumef::when_::when_any(_Cont &amp;&amp;cont) -&gt; future_t&lt; when_any_pair &gt;']]],
['write_73',['write',['../structresumef_1_1channel__t.html#a603d7e9a7e0d621292b5a3c340aaadc9',1,'resumef::channel_t']]]
];

+ 3
- 3
doxygen/html/search/classes_0.js View File

@@ -1,6 +1,6 @@
var searchData=
[
['adopt_5fmanual_5funlock_5ft_78',['adopt_manual_unlock_t',['../structresumef_1_1adopt__manual__unlock__t.html',1,'resumef']]],
['awaitable_5fimpl_5ft_79',['awaitable_impl_t',['../structresumef_1_1awaitable__impl__t.html',1,'resumef']]],
['awaitable_5ft_80',['awaitable_t',['../structresumef_1_1awaitable__t.html',1,'resumef']]]
['adopt_5fmanual_5funlock_5ft_80',['adopt_manual_unlock_t',['../structresumef_1_1adopt__manual__unlock__t.html',1,'resumef']]],
['awaitable_5fimpl_5ft_81',['awaitable_impl_t',['../structresumef_1_1awaitable__impl__t.html',1,'resumef']]],
['awaitable_5ft_82',['awaitable_t',['../structresumef_1_1awaitable__t.html',1,'resumef']]]
];

+ 2
- 2
doxygen/html/search/classes_1.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['batch_5flock_5ft_81',['batch_lock_t',['../classresumef_1_1batch__lock__t.html',1,'resumef']]],
['batch_5funlock_5ft_82',['batch_unlock_t',['../structresumef_1_1batch__unlock__t.html',1,'resumef']]]
['batch_5flock_5ft_83',['batch_lock_t',['../classresumef_1_1batch__lock__t.html',1,'resumef']]],
['batch_5funlock_5ft_84',['batch_unlock_t',['../structresumef_1_1batch__unlock__t.html',1,'resumef']]]
];

+ 8
- 8
doxygen/html/search/classes_2.js View File

@@ -1,11 +1,11 @@
var searchData=
[
['channel_5fexception_83',['channel_exception',['../structresumef_1_1channel__exception.html',1,'resumef']]],
['channel_5ft_84',['channel_t',['../structresumef_1_1channel__t.html',1,'resumef']]],
['counted_5fptr_85',['counted_ptr',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fevent_5fall_5ft_20_3e_86',['counted_ptr&lt; detail::state_event_all_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fevent_5ft_20_3e_87',['counted_ptr&lt; detail::state_event_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fmutex_5ft_20_3e_88',['counted_ptr&lt; detail::state_mutex_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20resumef_3a_3astate_5ft_20_3e_89',['counted_ptr&lt; resumef::state_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20state_5ftype_20_3e_90',['counted_ptr&lt; state_type &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]]
['channel_5fexception_85',['channel_exception',['../structresumef_1_1channel__exception.html',1,'resumef']]],
['channel_5ft_86',['channel_t',['../structresumef_1_1channel__t.html',1,'resumef']]],
['counted_5fptr_87',['counted_ptr',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fevent_5fall_5ft_20_3e_88',['counted_ptr&lt; detail::state_event_all_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fevent_5ft_20_3e_89',['counted_ptr&lt; detail::state_event_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20detail_3a_3astate_5fmutex_5ft_20_3e_90',['counted_ptr&lt; detail::state_mutex_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20resumef_3a_3astate_5ft_20_3e_91',['counted_ptr&lt; resumef::state_t &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]],
['counted_5fptr_3c_20state_5ftype_20_3e_92',['counted_ptr&lt; state_type &gt;',['../structresumef_1_1counted__ptr.html',1,'resumef']]]
];

+ 1
- 1
doxygen/html/search/classes_3.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['event_5ft_91',['event_t',['../structresumef_1_1event__t.html',1,'resumef']]]
['event_5ft_93',['event_t',['../structresumef_1_1event__t.html',1,'resumef']]]
];

+ 2
- 2
doxygen/html/search/classes_4.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['future_5ft_92',['future_t',['../structresumef_1_1future__t.html',1,'resumef']]],
['future_5ft_3c_20t_20_3e_93',['future_t&lt; T &gt;',['../structresumef_1_1future__t.html',1,'resumef']]]
['future_5ft_94',['future_t',['../structresumef_1_1future__t.html',1,'resumef']]],
['future_5ft_3c_20t_20_3e_95',['future_t&lt; T &gt;',['../structresumef_1_1future__t.html',1,'resumef']]]
];

+ 4
- 3
doxygen/html/search/classes_5.js View File

@@ -1,6 +1,7 @@
var searchData=
[
['generator_5ft_94',['generator_t',['../structresumef_1_1generator__t.html',1,'resumef']]],
['get_5fcurrent_5fscheduler_5fawaitor_95',['get_current_scheduler_awaitor',['../structresumef_1_1get__current__scheduler__awaitor.html',1,'resumef']]],
['get_5froot_5fstate_5fawaitor_96',['get_root_state_awaitor',['../structresumef_1_1get__root__state__awaitor.html',1,'resumef']]]
['generator_5ft_96',['generator_t',['../structresumef_1_1generator__t.html',1,'resumef']]],
['get_5fcurrent_5fscheduler_5fawaitor_97',['get_current_scheduler_awaitor',['../structresumef_1_1get__current__scheduler__awaitor.html',1,'resumef']]],
['get_5fcurrent_5ftask_5fawaitor_98',['get_current_task_awaitor',['../structresumef_1_1get__current__task__awaitor.html',1,'resumef']]],
['get_5froot_5fstate_5fawaitor_99',['get_root_state_awaitor',['../structresumef_1_1get__root__state__awaitor.html',1,'resumef']]]
];

+ 1
- 1
doxygen/html/search/classes_6.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['local_5fscheduler_5ft_97',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html',1,'resumef']]]
['local_5fscheduler_5ft_100',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html',1,'resumef']]]
];

+ 2
- 2
doxygen/html/search/classes_7.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['mutex_5fexception_98',['mutex_exception',['../structresumef_1_1mutex__exception.html',1,'resumef']]],
['mutex_5ft_99',['mutex_t',['../structresumef_1_1mutex__t.html',1,'resumef']]]
['mutex_5fexception_101',['mutex_exception',['../structresumef_1_1mutex__exception.html',1,'resumef']]],
['mutex_5ft_102',['mutex_t',['../structresumef_1_1mutex__t.html',1,'resumef']]]
];

+ 1
- 1
doxygen/html/search/classes_8.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['rf_5ftask_5ft_100',['rf_task_t',['../classasio_1_1rf__task__t.html',1,'asio']]]
['rf_5ftask_5ft_103',['rf_task_t',['../classasio_1_1rf__task__t.html',1,'asio']]]
];

+ 7
- 7
doxygen/html/search/classes_9.js View File

@@ -1,10 +1,10 @@
var searchData=
[
['scheduler_5ft_101',['scheduler_t',['../structresumef_1_1scheduler__t.html',1,'resumef']]],
['spinlock_102',['spinlock',['../structresumef_1_1spinlock.html',1,'resumef']]],
['state_5fbase_5ft_103',['state_base_t',['../structresumef_1_1state__base__t.html',1,'resumef']]],
['state_5ffuture_5ft_104',['state_future_t',['../structresumef_1_1state__future__t.html',1,'resumef']]],
['state_5fgenerator_5ft_105',['state_generator_t',['../structresumef_1_1state__generator__t.html',1,'resumef']]],
['state_5ft_106',['state_t',['../structresumef_1_1state__t.html',1,'resumef']]],
['switch_5fscheduler_5fawaitor_107',['switch_scheduler_awaitor',['../structresumef_1_1switch__scheduler__awaitor.html',1,'resumef']]]
['scheduler_5ft_104',['scheduler_t',['../structresumef_1_1scheduler__t.html',1,'resumef']]],
['spinlock_105',['spinlock',['../structresumef_1_1spinlock.html',1,'resumef']]],
['state_5fbase_5ft_106',['state_base_t',['../structresumef_1_1state__base__t.html',1,'resumef']]],
['state_5ffuture_5ft_107',['state_future_t',['../structresumef_1_1state__future__t.html',1,'resumef']]],
['state_5fgenerator_5ft_108',['state_generator_t',['../structresumef_1_1state__generator__t.html',1,'resumef']]],
['state_5ft_109',['state_t',['../structresumef_1_1state__t.html',1,'resumef']]],
['switch_5fscheduler_5fawaitor_110',['switch_scheduler_awaitor',['../structresumef_1_1switch__scheduler__awaitor.html',1,'resumef']]]
];

+ 4
- 5
doxygen/html/search/classes_a.js View File

@@ -1,8 +1,7 @@
var searchData=
[
['task_5ft_108',['task_t',['../structresumef_1_1task__t.html',1,'resumef']]],
['timer_5fcanceled_5fexception_109',['timer_canceled_exception',['../structresumef_1_1timer__canceled__exception.html',1,'resumef']]],
['timer_5fhandler_110',['timer_handler',['../structresumef_1_1timer__handler.html',1,'resumef']]],
['timer_5fmanager_111',['timer_manager',['../structresumef_1_1timer__manager.html',1,'resumef']]],
['timer_5ftarget_112',['timer_target',['../structresumef_1_1detail_1_1timer__target.html',1,'resumef::detail']]]
['timer_5fcanceled_5fexception_111',['timer_canceled_exception',['../structresumef_1_1timer__canceled__exception.html',1,'resumef']]],
['timer_5fhandler_112',['timer_handler',['../structresumef_1_1timer__handler.html',1,'resumef']]],
['timer_5fmanager_113',['timer_manager',['../structresumef_1_1timer__manager.html',1,'resumef']]],
['timer_5ftarget_114',['timer_target',['../structresumef_1_1detail_1_1timer__target.html',1,'resumef::detail']]]
];

+ 1
- 1
doxygen/html/search/classes_b.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['when_5f_113',['when_',['../structresumef_1_1when__.html',1,'resumef']]]
['when_5f_115',['when_',['../structresumef_1_1when__.html',1,'resumef']]]
];

+ 1
- 1
doxygen/html/search/classes_c.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['yield_5fawaitor_114',['yield_awaitor',['../structresumef_1_1yield__awaitor.html',1,'resumef']]]
['yield_5fawaitor_116',['yield_awaitor',['../structresumef_1_1yield__awaitor.html',1,'resumef']]]
];

+ 1
- 1
doxygen/html/search/functions_0.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['batch_5flock_5ft_115',['batch_lock_t',['../classresumef_1_1batch__lock__t.html#a3779f0030948ad54e4f97c8e73afa44d',1,'resumef::batch_lock_t::batch_lock_t(_Cont &amp;locks_)'],['../classresumef_1_1batch__lock__t.html#af46b0d1ba6494e2955660271b190a99a',1,'resumef::batch_lock_t::batch_lock_t(_Cont &amp;locks_, _Assemble &amp;la_)'],['../classresumef_1_1batch__lock__t.html#a2293d0f5d68f335ed8dd0bb6e89321a6',1,'resumef::batch_lock_t::batch_lock_t(std::adopt_lock_t, _Cont &amp;locks_)'],['../classresumef_1_1batch__lock__t.html#abf8d154d25e3b66eb308750052fb660e',1,'resumef::batch_lock_t::batch_lock_t(std::adopt_lock_t, _Cont &amp;locks_, _Assemble &amp;la_)'],['../classresumef_1_1batch__lock__t.html#a3da9e6b8f868fffed636704c551fea47',1,'resumef::batch_lock_t::batch_lock_t(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a820544949fcf42d08759f5f29686cc9c',1,'resumef::batch_lock_t::batch_lock_t(batch_lock_t &amp;&amp;_Right)']]]
['batch_5flock_5ft_117',['batch_lock_t',['../classresumef_1_1batch__lock__t.html#a3779f0030948ad54e4f97c8e73afa44d',1,'resumef::batch_lock_t::batch_lock_t(_Cont &amp;locks_)'],['../classresumef_1_1batch__lock__t.html#af46b0d1ba6494e2955660271b190a99a',1,'resumef::batch_lock_t::batch_lock_t(_Cont &amp;locks_, _Assemble &amp;la_)'],['../classresumef_1_1batch__lock__t.html#a2293d0f5d68f335ed8dd0bb6e89321a6',1,'resumef::batch_lock_t::batch_lock_t(std::adopt_lock_t, _Cont &amp;locks_)'],['../classresumef_1_1batch__lock__t.html#abf8d154d25e3b66eb308750052fb660e',1,'resumef::batch_lock_t::batch_lock_t(std::adopt_lock_t, _Cont &amp;locks_, _Assemble &amp;la_)'],['../classresumef_1_1batch__lock__t.html#a3da9e6b8f868fffed636704c551fea47',1,'resumef::batch_lock_t::batch_lock_t(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a820544949fcf42d08759f5f29686cc9c',1,'resumef::batch_lock_t::batch_lock_t(batch_lock_t &amp;&amp;_Right)']]]
];

+ 5
- 4
doxygen/html/search/functions_1.js View File

@@ -1,7 +1,8 @@
var searchData=
[
['capacity_116',['capacity',['../structresumef_1_1channel__t.html#a747f2db122ec920e6c253591729138ac',1,'resumef::channel_t']]],
['channel_5ft_117',['channel_t',['../structresumef_1_1channel__t.html#ac94d5fa13a6c1f5cc5d3ee3e50fa4232',1,'resumef::channel_t']]],
['counted_5fptr_118',['counted_ptr',['../structresumef_1_1counted__ptr.html#ad3969379af7311183c1c11d13f6da9f3',1,'resumef::counted_ptr::counted_ptr() noexcept=default'],['../structresumef_1_1counted__ptr.html#ad466495cf5a6056e326a923558676ccd',1,'resumef::counted_ptr::counted_ptr(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#ab752ffdd40c7ab1be06e7662488d8e24',1,'resumef::counted_ptr::counted_ptr(T *p)'],['../structresumef_1_1counted__ptr.html#a8b6f5332dd4754c22970f7e5406c6233',1,'resumef::counted_ptr::counted_ptr(counted_ptr &amp;&amp;cp) noexcept']]],
['current_5fscheduler_119',['current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a',1,'resumef::get_current_scheduler_awaitor']]]
['capacity_118',['capacity',['../structresumef_1_1channel__t.html#a747f2db122ec920e6c253591729138ac',1,'resumef::channel_t']]],
['channel_5ft_119',['channel_t',['../structresumef_1_1channel__t.html#ac94d5fa13a6c1f5cc5d3ee3e50fa4232',1,'resumef::channel_t']]],
['counted_5fptr_120',['counted_ptr',['../structresumef_1_1counted__ptr.html#ad3969379af7311183c1c11d13f6da9f3',1,'resumef::counted_ptr::counted_ptr() noexcept=default'],['../structresumef_1_1counted__ptr.html#ad466495cf5a6056e326a923558676ccd',1,'resumef::counted_ptr::counted_ptr(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#ab752ffdd40c7ab1be06e7662488d8e24',1,'resumef::counted_ptr::counted_ptr(T *p)'],['../structresumef_1_1counted__ptr.html#a8b6f5332dd4754c22970f7e5406c6233',1,'resumef::counted_ptr::counted_ptr(counted_ptr &amp;&amp;cp) noexcept']]],
['current_5fscheduler_121',['current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#a87bd06c80e5cc26bd8a3bb0025c6bb6a',1,'resumef::get_current_scheduler_awaitor']]],
['current_5ftask_122',['current_task',['../structresumef_1_1get__current__task__awaitor.html#a58d877db176f6ccbe4fc2a2594b87282',1,'resumef::get_current_task_awaitor']]]
];

+ 2
- 2
doxygen/html/search/functions_2.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['empty_120',['empty',['../structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585',1,'resumef::scheduler_t']]],
['event_5ft_121',['event_t',['../structresumef_1_1event__t.html#a5ae54675783d984c3defd7b2093c91a1',1,'resumef::event_t::event_t(bool initially=false)'],['../structresumef_1_1event__t.html#ab3a49adfb8c1cfcfa606cca3148f946a',1,'resumef::event_t::event_t(std::adopt_lock_t)']]]
['empty_123',['empty',['../structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585',1,'resumef::scheduler_t']]],
['event_5ft_124',['event_t',['../structresumef_1_1event__t.html#a5ae54675783d984c3defd7b2093c91a1',1,'resumef::event_t::event_t(bool initially=false)'],['../structresumef_1_1event__t.html#ab3a49adfb8c1cfcfa606cca3148f946a',1,'resumef::event_t::event_t(std::adopt_lock_t)']]]
];

+ 5
- 4
doxygen/html/search/functions_3.js View File

@@ -1,7 +1,8 @@
var searchData=
[
['get_122',['get',['../structresumef_1_1counted__ptr.html#a9f6757dac685431f2ae561a58c502d1f',1,'resumef::counted_ptr']]],
['get_5fcurrent_5fscheduler_123',['get_current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf',1,'resumef::get_current_scheduler_awaitor']]],
['get_5ffuture_124',['get_future',['../structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d',1,'resumef::awaitable_impl_t']]],
['get_5froot_5fstate_125',['get_root_state',['../structresumef_1_1get__root__state__awaitor.html#adffac6b1ec6065c68dc345aa6fff5e49',1,'resumef::get_root_state_awaitor']]]
['get_125',['get',['../structresumef_1_1counted__ptr.html#a9f6757dac685431f2ae561a58c502d1f',1,'resumef::counted_ptr']]],
['get_5fcurrent_5fscheduler_126',['get_current_scheduler',['../structresumef_1_1get__current__scheduler__awaitor.html#ae47a1b255bffdfc2c7762f4d9cf9b3bf',1,'resumef::get_current_scheduler_awaitor']]],
['get_5fcurrent_5ftask_127',['get_current_task',['../structresumef_1_1get__current__task__awaitor.html#a323b0f70222fd1f631bd14e3a0d81ccb',1,'resumef::get_current_task_awaitor']]],
['get_5ffuture_128',['get_future',['../structresumef_1_1awaitable__impl__t.html#a647bd5f5a5572bbbe8a17000ea5dc06d',1,'resumef::awaitable_impl_t']]],
['get_5froot_5fstate_129',['get_root_state',['../structresumef_1_1get__root__state__awaitor.html#adffac6b1ec6065c68dc345aa6fff5e49',1,'resumef::get_root_state_awaitor']]]
];

+ 2
- 2
doxygen/html/search/functions_4.js View File

@@ -1,5 +1,5 @@
var searchData=
[
['local_5fscheduler_5ft_126',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112',1,'resumef::local_scheduler_t::local_scheduler_t()'],['../structresumef_1_1local__scheduler__t.html#a0443e2872feef9f1893087826e7fa7e2',1,'resumef::local_scheduler_t::local_scheduler_t(scheduler_t &amp;sch)']]],
['lock_127',['lock',['../structresumef_1_1mutex__t.html#a15c654948f47113fc92223a811d60090',1,'resumef::mutex_t::lock() const noexcept'],['../structresumef_1_1mutex__t.html#aad074e28785741eb1615d3126da6088a',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag) const noexcept'],['../structresumef_1_1mutex__t.html#a3442f7c56bed34e086bd5bd41e4a9c5a',1,'resumef::mutex_t::lock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#ae2aecf303188c9a8122e3fde4fb525fd',1,'resumef::mutex_t::lock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ae7f95d070a020cfeaf99684a06c5fd47',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ad7ba090cf3188eaa738d4e37a4c6ab7a',1,'resumef::mutex_t::lock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#abfbfd653a04d3c3b3d88a5bdcaba4664',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#ae313002e0db9c20b32d386e4eb91c372',1,'resumef::spinlock::lock()']]]
['local_5fscheduler_5ft_130',['local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#a05f60c654c1f7390682cab7cdcddb112',1,'resumef::local_scheduler_t::local_scheduler_t()'],['../structresumef_1_1local__scheduler__t.html#a0443e2872feef9f1893087826e7fa7e2',1,'resumef::local_scheduler_t::local_scheduler_t(scheduler_t &amp;sch)']]],
['lock_131',['lock',['../structresumef_1_1mutex__t.html#a15c654948f47113fc92223a811d60090',1,'resumef::mutex_t::lock() const noexcept'],['../structresumef_1_1mutex__t.html#aad074e28785741eb1615d3126da6088a',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag) const noexcept'],['../structresumef_1_1mutex__t.html#a3442f7c56bed34e086bd5bd41e4a9c5a',1,'resumef::mutex_t::lock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#ae2aecf303188c9a8122e3fde4fb525fd',1,'resumef::mutex_t::lock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ae7f95d070a020cfeaf99684a06c5fd47',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#ad7ba090cf3188eaa738d4e37a4c6ab7a',1,'resumef::mutex_t::lock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#abfbfd653a04d3c3b3d88a5bdcaba4664',1,'resumef::mutex_t::lock(adopt_manual_unlock_t manual_unlock_tag, void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#ae313002e0db9c20b32d386e4eb91c372',1,'resumef::spinlock::lock()']]]
];

+ 1
- 1
doxygen/html/search/functions_5.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['mutex_5ft_128',['mutex_t',['../structresumef_1_1mutex__t.html#a597d0ca4a0f0d9963d0578afb5aa1ecf',1,'resumef::mutex_t']]]
['mutex_5ft_132',['mutex_t',['../structresumef_1_1mutex__t.html#a597d0ca4a0f0d9963d0578afb5aa1ecf',1,'resumef::mutex_t']]]
];

+ 5
- 5
doxygen/html/search/functions_6.js View File

@@ -1,8 +1,8 @@
var searchData=
[
['operator_20co_5fawait_129',['operator co_await',['../structresumef_1_1channel__t.html#a9143771fbfda1d5996e89abc0eb2771e',1,'resumef::channel_t::operator co_await()'],['../structresumef_1_1event__t.html#a9656c785d3c1c1d57560137894aa1be3',1,'resumef::event_t::operator co_await()'],['../structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de',1,'resumef::mutex_t::operator co_await()']]],
['operator_2b_130',['operator+',['../structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec',1,'resumef::scheduler_t']]],
['operator_2d_3e_131',['operator-&gt;',['../structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba',1,'resumef::counted_ptr']]],
['operator_3c_3c_132',['operator&lt;&lt;',['../structresumef_1_1channel__t.html#a8554b84ad37f013471f2c5d2da745887',1,'resumef::channel_t']]],
['operator_3d_133',['operator=',['../structresumef_1_1counted__ptr.html#a8a5bff0a86d41b1ab50f817be770573a',1,'resumef::counted_ptr::operator=(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#af6a044ce1cdecc3a2650f16f445de2d4',1,'resumef::counted_ptr::operator=(counted_ptr &amp;&amp;cp) noexcept'],['../classresumef_1_1batch__lock__t.html#aabbfeb513ac907b9c8caf6fda9a356d4',1,'resumef::batch_lock_t::operator=(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a057618d5a806ffe6fd106f851082f12e',1,'resumef::batch_lock_t::operator=(batch_lock_t &amp;&amp;_Right)']]]
['operator_20co_5fawait_133',['operator co_await',['../structresumef_1_1channel__t.html#a9143771fbfda1d5996e89abc0eb2771e',1,'resumef::channel_t::operator co_await()'],['../structresumef_1_1event__t.html#a9656c785d3c1c1d57560137894aa1be3',1,'resumef::event_t::operator co_await()'],['../structresumef_1_1mutex__t.html#a9f086f150094d041b0c4372a8de504de',1,'resumef::mutex_t::operator co_await()']]],
['operator_2b_134',['operator+',['../structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7',1,'resumef::scheduler_t']]],
['operator_2d_3e_135',['operator-&gt;',['../structresumef_1_1counted__ptr.html#aa22f547da8b8e79b476ee83e4a790dba',1,'resumef::counted_ptr']]],
['operator_3c_3c_136',['operator&lt;&lt;',['../structresumef_1_1channel__t.html#a8554b84ad37f013471f2c5d2da745887',1,'resumef::channel_t']]],
['operator_3d_137',['operator=',['../structresumef_1_1counted__ptr.html#a8a5bff0a86d41b1ab50f817be770573a',1,'resumef::counted_ptr::operator=(const counted_ptr &amp;cp)'],['../structresumef_1_1counted__ptr.html#af6a044ce1cdecc3a2650f16f445de2d4',1,'resumef::counted_ptr::operator=(counted_ptr &amp;&amp;cp) noexcept'],['../classresumef_1_1batch__lock__t.html#aabbfeb513ac907b9c8caf6fda9a356d4',1,'resumef::batch_lock_t::operator=(const batch_lock_t &amp;)=delete'],['../classresumef_1_1batch__lock__t.html#a057618d5a806ffe6fd106f851082f12e',1,'resumef::batch_lock_t::operator=(batch_lock_t &amp;&amp;_Right)']]]
];

+ 5
- 5
doxygen/html/search/functions_7.js View File

@@ -1,8 +1,8 @@
var searchData=
[
['read_134',['read',['../structresumef_1_1channel__t.html#a4ad0246bbfc50513d5a97227905f73c5',1,'resumef::channel_t']]],
['reset_135',['reset',['../structresumef_1_1counted__ptr.html#aa33f9e7d3ee850bed6dbefd40252a899',1,'resumef::counted_ptr::reset()'],['../structresumef_1_1event__t.html#a8da187ffff9c6aee7e9bad6d97af9f4a',1,'resumef::event_t::reset()']]],
['root_5fstate_136',['root_state',['../structresumef_1_1get__root__state__awaitor.html#ae6ad15614c2597a714b84bfc3e369b8a',1,'resumef::get_root_state_awaitor']]],
['run_5fone_5fbatch_137',['run_one_batch',['../structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc',1,'resumef::scheduler_t']]],
['run_5funtil_5fnotask_138',['run_until_notask',['../structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8',1,'resumef::scheduler_t']]]
['read_138',['read',['../structresumef_1_1channel__t.html#a4ad0246bbfc50513d5a97227905f73c5',1,'resumef::channel_t']]],
['reset_139',['reset',['../structresumef_1_1counted__ptr.html#aa33f9e7d3ee850bed6dbefd40252a899',1,'resumef::counted_ptr::reset()'],['../structresumef_1_1event__t.html#a8da187ffff9c6aee7e9bad6d97af9f4a',1,'resumef::event_t::reset()']]],
['root_5fstate_140',['root_state',['../structresumef_1_1get__root__state__awaitor.html#ae6ad15614c2597a714b84bfc3e369b8a',1,'resumef::get_root_state_awaitor']]],
['run_5fone_5fbatch_141',['run_one_batch',['../structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc',1,'resumef::scheduler_t']]],
['run_5funtil_5fnotask_142',['run_until_notask',['../structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8',1,'resumef::scheduler_t']]]
];

+ 5
- 5
doxygen/html/search/functions_8.js View File

@@ -1,8 +1,8 @@
var searchData=
[
['set_5fexception_139',['set_exception',['../structresumef_1_1awaitable__impl__t.html#a22f1adeb8ecfd2c078f620dbc7c368a1',1,'resumef::awaitable_impl_t']]],
['set_5fvalue_140',['set_value',['../structresumef_1_1awaitable__t.html#af66d4b4a3ba5339873b2dd8353ae6db3',1,'resumef::awaitable_t']]],
['signal_141',['signal',['../structresumef_1_1event__t.html#ab9500bb2438c27adb4b34988eaa04ff9',1,'resumef::event_t']]],
['signal_5fall_142',['signal_all',['../structresumef_1_1event__t.html#aac7bf6f81982126225125354769ad695',1,'resumef::event_t']]],
['spinlock_143',['spinlock',['../structresumef_1_1spinlock.html#a32730a90789147297f9777fe866a224f',1,'resumef::spinlock']]]
['set_5fexception_143',['set_exception',['../structresumef_1_1awaitable__impl__t.html#a22f1adeb8ecfd2c078f620dbc7c368a1',1,'resumef::awaitable_impl_t']]],
['set_5fvalue_144',['set_value',['../structresumef_1_1awaitable__t.html#af66d4b4a3ba5339873b2dd8353ae6db3',1,'resumef::awaitable_t']]],
['signal_145',['signal',['../structresumef_1_1event__t.html#ab9500bb2438c27adb4b34988eaa04ff9',1,'resumef::event_t']]],
['signal_5fall_146',['signal_all',['../structresumef_1_1event__t.html#aac7bf6f81982126225125354769ad695',1,'resumef::event_t']]],
['spinlock_147',['spinlock',['../structresumef_1_1spinlock.html#a32730a90789147297f9777fe866a224f',1,'resumef::spinlock']]]
];

+ 5
- 5
doxygen/html/search/functions_9.js View File

@@ -1,8 +1,8 @@
var searchData=
[
['throw_5fexception_144',['throw_exception',['../structresumef_1_1awaitable__impl__t.html#a2f7b2ef525186c9b7512dceb2453bebe',1,'resumef::awaitable_impl_t']]],
['timer_145',['timer',['../structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22',1,'resumef::scheduler_t']]],
['try_5flock_146',['try_lock',['../structresumef_1_1mutex__t.html#a2844d5df6562c153bc5b32d1720efb30',1,'resumef::mutex_t::try_lock() const noexcept'],['../structresumef_1_1mutex__t.html#a1dd128870c1fdcc7261ef0fa63e12254',1,'resumef::mutex_t::try_lock(void *unique_address) const'],['../structresumef_1_1spinlock.html#a62a6841e933ee7845a9ba42765a1b5e3',1,'resumef::spinlock::try_lock()']]],
['try_5flock_5ffor_147',['try_lock_for',['../structresumef_1_1mutex__t.html#afca20661d92d6acac34b324cab774310',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt) const noexcept'],['../structresumef_1_1mutex__t.html#a15c6518dafb6c2cf52a0b0dbdd90ae7b',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt, void *unique_address)']]],
['try_5flock_5funtil_148',['try_lock_until',['../structresumef_1_1mutex__t.html#ada9a310ff364fa8b1ee78dc2f799a8a5',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp) const noexcept'],['../structresumef_1_1mutex__t.html#aec072ad5fd0d6b688a3866ee9f1dc791',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp, void *unique_address)']]]
['throw_5fexception_148',['throw_exception',['../structresumef_1_1awaitable__impl__t.html#a2f7b2ef525186c9b7512dceb2453bebe',1,'resumef::awaitable_impl_t']]],
['timer_149',['timer',['../structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22',1,'resumef::scheduler_t']]],
['try_5flock_150',['try_lock',['../structresumef_1_1mutex__t.html#a2844d5df6562c153bc5b32d1720efb30',1,'resumef::mutex_t::try_lock() const noexcept'],['../structresumef_1_1mutex__t.html#a1dd128870c1fdcc7261ef0fa63e12254',1,'resumef::mutex_t::try_lock(void *unique_address) const'],['../structresumef_1_1spinlock.html#a62a6841e933ee7845a9ba42765a1b5e3',1,'resumef::spinlock::try_lock()']]],
['try_5flock_5ffor_151',['try_lock_for',['../structresumef_1_1mutex__t.html#afca20661d92d6acac34b324cab774310',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt) const noexcept'],['../structresumef_1_1mutex__t.html#a15c6518dafb6c2cf52a0b0dbdd90ae7b',1,'resumef::mutex_t::try_lock_for(const std::chrono::duration&lt; _Rep, _Period &gt; &amp;dt, void *unique_address)']]],
['try_5flock_5funtil_152',['try_lock_until',['../structresumef_1_1mutex__t.html#ada9a310ff364fa8b1ee78dc2f799a8a5',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp) const noexcept'],['../structresumef_1_1mutex__t.html#aec072ad5fd0d6b688a3866ee9f1dc791',1,'resumef::mutex_t::try_lock_until(const std::chrono::time_point&lt; _Rep, _Period &gt; &amp;tp, void *unique_address)']]]
];

+ 1
- 1
doxygen/html/search/functions_a.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['unlock_149',['unlock',['../structresumef_1_1mutex__t.html#a430ec9f4b9bb1c5711b6ba7ef3a1ad99',1,'resumef::mutex_t::unlock() const noexcept'],['../structresumef_1_1mutex__t.html#abc858a566d0884726740557f930ec7db',1,'resumef::mutex_t::unlock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#a0bc0948ed9eab5e41518ff9c1a6327a3',1,'resumef::mutex_t::unlock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#a28defd5d64173ef3114a419f945adb3d',1,'resumef::mutex_t::unlock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#af6d49dc277c0719e282a9387ed3c35e9',1,'resumef::spinlock::unlock()'],['../classresumef_1_1batch__lock__t.html#abc72b35a9eef1bd6c39955d63cc8ce9c',1,'resumef::batch_lock_t::unlock()']]]
['unlock_153',['unlock',['../structresumef_1_1mutex__t.html#a430ec9f4b9bb1c5711b6ba7ef3a1ad99',1,'resumef::mutex_t::unlock() const noexcept'],['../structresumef_1_1mutex__t.html#abc858a566d0884726740557f930ec7db',1,'resumef::mutex_t::unlock(void *unique_address) const'],['../structresumef_1_1mutex__t.html#a0bc0948ed9eab5e41518ff9c1a6327a3',1,'resumef::mutex_t::unlock(_Mtxs &amp;... mtxs)'],['../structresumef_1_1mutex__t.html#a28defd5d64173ef3114a419f945adb3d',1,'resumef::mutex_t::unlock(void *unique_address, _Mtxs &amp;... mtxs)'],['../structresumef_1_1spinlock.html#af6d49dc277c0719e282a9387ed3c35e9',1,'resumef::spinlock::unlock()'],['../classresumef_1_1batch__lock__t.html#abc72b35a9eef1bd6c39955d63cc8ce9c',1,'resumef::batch_lock_t::unlock()']]]
];

+ 1
- 1
doxygen/html/search/functions_b.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['via_150',['via',['../structresumef_1_1switch__scheduler__awaitor.html#ad895f4414bfb91fde51ac735420246a9',1,'resumef::switch_scheduler_awaitor::via(scheduler_t &amp;sch) noexcept'],['../structresumef_1_1switch__scheduler__awaitor.html#a59f9ab7279d4aee22b69b93c86b209e7',1,'resumef::switch_scheduler_awaitor::via(scheduler_t *sch) noexcept']]]
['via_154',['via',['../structresumef_1_1switch__scheduler__awaitor.html#ad895f4414bfb91fde51ac735420246a9',1,'resumef::switch_scheduler_awaitor::via(scheduler_t &amp;sch) noexcept'],['../structresumef_1_1switch__scheduler__awaitor.html#a59f9ab7279d4aee22b69b93c86b209e7',1,'resumef::switch_scheduler_awaitor::via(scheduler_t *sch) noexcept']]]
];

+ 6
- 6
doxygen/html/search/functions_c.js View File

@@ -1,9 +1,9 @@
var searchData=
[
['wait_151',['wait',['../structresumef_1_1event__t.html#a1231525d8406b1f69b563e84dc7fead7',1,'resumef::event_t']]],
['wait_5ffor_152',['wait_for',['../structresumef_1_1event__t.html#ac3d2ceb787ca321855731e40646d4112',1,'resumef::event_t']]],
['wait_5funtil_153',['wait_until',['../structresumef_1_1event__t.html#a083cda88807a10c4f68b134ce32c597b',1,'resumef::event_t']]],
['when_5fall_154',['when_all',['../structresumef_1_1when__.html#a6ba9218688af965ccf6d4bd9e98b152a',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt; &gt;'],['../structresumef_1_1when__.html#a29810e8fe2efbfb395669971758182fe',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::declval&lt; _Iter &gt;())&gt; &gt; &gt;'],['../structresumef_1_1when__.html#a66d4fc83bbdbe36232615ff7d0459049',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Cont &amp;cont)'],['../structresumef_1_1when__.html#a1d453b444cfaa704cf7a1da01eed49b9',1,'resumef::when_::when_all(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt;&gt;'],['../structresumef_1_1when__.html#a9b8ec7229b5c7dd7c2ae58d3365799dc',1,'resumef::when_::when_all(_Iter begin, _Iter end) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*begin)&gt;&gt;&gt;'],['../structresumef_1_1when__.html#aa2a8218ff1eb6cb48fb981310a284b84',1,'resumef::when_::when_all(_Cont &amp;&amp;cont) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::begin(cont))&gt;&gt;&gt;']]],
['when_5fany_155',['when_any',['../structresumef_1_1when__.html#af4fe05b26abdab4ff00505ce56674ef9',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a5eb64c53feea7f37b643f9b9c3faf685',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a753478e5b7b3df202efc98c0274484e8',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Cont &amp;cont) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a4ec23495051e2b682f27ce0b3d527305',1,'resumef::when_::when_any(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a8595c1bc0659b67724654b6661537058',1,'resumef::when_::when_any(_Iter begin, _Iter end) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a0b9b2f88f5c8cd76dd8d1c70926cc029',1,'resumef::when_::when_any(_Cont &amp;&amp;cont) -&gt; future_t&lt; when_any_pair &gt;']]],
['write_156',['write',['../structresumef_1_1channel__t.html#a603d7e9a7e0d621292b5a3c340aaadc9',1,'resumef::channel_t']]]
['wait_155',['wait',['../structresumef_1_1event__t.html#a1231525d8406b1f69b563e84dc7fead7',1,'resumef::event_t']]],
['wait_5ffor_156',['wait_for',['../structresumef_1_1event__t.html#ac3d2ceb787ca321855731e40646d4112',1,'resumef::event_t']]],
['wait_5funtil_157',['wait_until',['../structresumef_1_1event__t.html#a083cda88807a10c4f68b134ce32c597b',1,'resumef::event_t']]],
['when_5fall_158',['when_all',['../structresumef_1_1when__.html#a6ba9218688af965ccf6d4bd9e98b152a',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt; &gt;'],['../structresumef_1_1when__.html#a29810e8fe2efbfb395669971758182fe',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::declval&lt; _Iter &gt;())&gt; &gt; &gt;'],['../structresumef_1_1when__.html#a66d4fc83bbdbe36232615ff7d0459049',1,'resumef::when_::when_all(scheduler_t &amp;sch, _Cont &amp;cont)'],['../structresumef_1_1when__.html#a1d453b444cfaa704cf7a1da01eed49b9',1,'resumef::when_::when_all(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; std::tuple&lt; detail::awaitor_result_t&lt; _Awaitable &gt;... &gt;&gt;'],['../structresumef_1_1when__.html#a9b8ec7229b5c7dd7c2ae58d3365799dc',1,'resumef::when_::when_all(_Iter begin, _Iter end) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*begin)&gt;&gt;&gt;'],['../structresumef_1_1when__.html#aa2a8218ff1eb6cb48fb981310a284b84',1,'resumef::when_::when_all(_Cont &amp;&amp;cont) -&gt; future_t&lt; std::vector&lt; detail::awaitor_result_t&lt; decltype(*std::begin(cont))&gt;&gt;&gt;']]],
['when_5fany_159',['when_any',['../structresumef_1_1when__.html#af4fe05b26abdab4ff00505ce56674ef9',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Awaitable &amp;&amp;... args) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a5eb64c53feea7f37b643f9b9c3faf685',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Iter begin, _Iter end) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a753478e5b7b3df202efc98c0274484e8',1,'resumef::when_::when_any(scheduler_t &amp;sch, _Cont &amp;cont) -&gt; detail::when_future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a4ec23495051e2b682f27ce0b3d527305',1,'resumef::when_::when_any(_Awaitable &amp;&amp;... args) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a8595c1bc0659b67724654b6661537058',1,'resumef::when_::when_any(_Iter begin, _Iter end) -&gt; future_t&lt; when_any_pair &gt;'],['../structresumef_1_1when__.html#a0b9b2f88f5c8cd76dd8d1c70926cc029',1,'resumef::when_::when_any(_Cont &amp;&amp;cont) -&gt; future_t&lt; when_any_pair &gt;']]],
['write_160',['write',['../structresumef_1_1channel__t.html#a603d7e9a7e0d621292b5a3c340aaadc9',1,'resumef::channel_t']]]
];

+ 1
- 1
doxygen/html/search/functions_d.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['yield_157',['yield',['../structresumef_1_1yield__awaitor.html#a25aa400aefa4bb8c2b61a190b0a7cdda',1,'resumef::yield_awaitor']]]
['yield_161',['yield',['../structresumef_1_1yield__awaitor.html#a25aa400aefa4bb8c2b61a190b0a7cdda',1,'resumef::yield_awaitor']]]
];

+ 4
- 4
doxygen/html/search/functions_e.js View File

@@ -1,7 +1,7 @@
var searchData=
[
['_7ebatch_5flock_5ft_158',['~batch_lock_t',['../classresumef_1_1batch__lock__t.html#a661dad263c32b25b6bcc92c0d7b73830',1,'resumef::batch_lock_t']]],
['_7ecounted_5fptr_159',['~counted_ptr',['../structresumef_1_1counted__ptr.html#a825f25bf4975e015f859e8ba29bd85b6',1,'resumef::counted_ptr']]],
['_7eevent_5ft_160',['~event_t',['../structresumef_1_1event__t.html#af742aa0454758c3def349cacae86c229',1,'resumef::event_t']]],
['_7elocal_5fscheduler_5ft_161',['~local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec',1,'resumef::local_scheduler_t']]]
['_7ebatch_5flock_5ft_162',['~batch_lock_t',['../classresumef_1_1batch__lock__t.html#a661dad263c32b25b6bcc92c0d7b73830',1,'resumef::batch_lock_t']]],
['_7ecounted_5fptr_163',['~counted_ptr',['../structresumef_1_1counted__ptr.html#a825f25bf4975e015f859e8ba29bd85b6',1,'resumef::counted_ptr']]],
['_7eevent_5ft_164',['~event_t',['../structresumef_1_1event__t.html#af742aa0454758c3def349cacae86c229',1,'resumef::event_t']]],
['_7elocal_5fscheduler_5ft_165',['~local_scheduler_t',['../structresumef_1_1local__scheduler__t.html#af4c4cd1c6626930ccf891368e3f3e6ec',1,'resumef::local_scheduler_t']]]
];

+ 1
- 1
doxygen/html/search/variables_0.js View File

@@ -1,4 +1,4 @@
var searchData=
[
['_5fstate_162',['_state',['../structresumef_1_1awaitable__impl__t.html#af7b6df5bbe7392334d7914db0d878915',1,'resumef::awaitable_impl_t']]]
['_5fstate_166',['_state',['../structresumef_1_1awaitable__impl__t.html#af7b6df5bbe7392334d7914db0d878915',1,'resumef::awaitable_impl_t']]]
];

+ 2
- 2
doxygen/html/state_8h_source.html View File

@@ -212,10 +212,10 @@ $(function() {
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">//msvc认为是constexpr表达式(不写还给警告),然而,clang不这么认为。</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">//放弃constexpr,反正合格的编译器都会优化掉这个if判断的。</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> </div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#ifndef __clang__</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; !defined(__clang__) &amp;&amp; !defined(__GNUC__)</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; constexpr</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; (offsetof(<a class="code" href="structresumef_1_1state__future__t.html">state_future_t</a>, _is_future) - offsetof(<a class="code" href="structresumef_1_1state__future__t.html">state_future_t</a>, _has_value) == 1)</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; (_offset_of(<a class="code" href="structresumef_1_1state__future__t.html">state_future_t</a>, _is_future) - _offset_of(<a class="code" href="structresumef_1_1state__future__t.html">state_future_t</a>, _has_value) == 1)</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> 0 != <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>std::atomic&lt;uint16_t&gt; &amp;<span class="keyword">&gt;</span>(_has_value).load(std::memory_order_acquire);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> _has_value.load(std::memory_order_acquire) != result_type::None || _is_future;</div>

+ 1
- 1
doxygen/html/structresumef_1_1scheduler__t-members.html View File

@@ -73,7 +73,7 @@ $(function() {
<p>成员的完整列表,这些成员属于 <a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a>,包括所有继承而来的类成员</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">empty</a>() const</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">operator+</a>(_Ty &amp;&amp;coro)</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">operator+</a>(_Ty &amp;&amp;coro)</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#a8b396c23730b15afd345328b96dbe1cc">run_one_batch</a>()</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8">run_until_notask</a>()</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html#a1d369882e156db4efc1a1693acfc0e22">timer</a>() const noexcept</td><td class="entry"><a class="el" href="structresumef_1_1scheduler__t.html">resumef::scheduler_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>

+ 14
- 7
doxygen/html/structresumef_1_1scheduler__t.html View File

@@ -86,10 +86,10 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:ae4ef2589ef2ce0335107d579b9e244a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8">run_until_notask</a> ()</td></tr>
<tr class="memdesc:ae4ef2589ef2ce0335107d579b9e244a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">循环运行所有的协程,直到所有协程都运行完成。 <a href="structresumef_1_1scheduler__t.html#ae4ef2589ef2ce0335107d579b9e244a8">更多...</a><br /></td></tr>
<tr class="separator:ae4ef2589ef2ce0335107d579b9e244a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a449d34ba6a8e28284f2b02089cb7dcec"><td class="memTemplParams" colspan="2">template&lt;class _Ty &gt; </td></tr>
<tr class="memitem:a449d34ba6a8e28284f2b02089cb7dcec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">operator+</a> (_Ty &amp;&amp;coro)</td></tr>
<tr class="memdesc:a449d34ba6a8e28284f2b02089cb7dcec"><td class="mdescLeft">&#160;</td><td class="mdescRight">将一个协程加入到调度器里开始运行。 <a href="structresumef_1_1scheduler__t.html#a449d34ba6a8e28284f2b02089cb7dcec">更多...</a><br /></td></tr>
<tr class="separator:a449d34ba6a8e28284f2b02089cb7dcec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afac99b67f0686e836fafb1e2f0bd41b7"><td class="memTemplParams" colspan="2">template&lt;class _Ty &gt; </td></tr>
<tr class="memitem:afac99b67f0686e836fafb1e2f0bd41b7"><td class="memTemplItemLeft" align="right" valign="top">task_t *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">operator+</a> (_Ty &amp;&amp;coro)</td></tr>
<tr class="memdesc:afac99b67f0686e836fafb1e2f0bd41b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">将一个协程加入到调度器里开始运行。 <a href="structresumef_1_1scheduler__t.html#afac99b67f0686e836fafb1e2f0bd41b7">更多...</a><br /></td></tr>
<tr class="separator:afac99b67f0686e836fafb1e2f0bd41b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d22640803eb9397cb844e532f4c8585"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">empty</a> () const</td></tr>
<tr class="memdesc:a9d22640803eb9397cb844e532f4c8585"><td class="mdescLeft">&#160;</td><td class="mdescRight">判断所有协程是否运行完毕。 <a href="structresumef_1_1scheduler__t.html#a9d22640803eb9397cb844e532f4c8585">更多...</a><br /></td></tr>
<tr class="separator:a9d22640803eb9397cb844e532f4c8585"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -138,8 +138,8 @@ Public 成员函数</h2></td></tr>

</div>
</div>
<a id="a449d34ba6a8e28284f2b02089cb7dcec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a449d34ba6a8e28284f2b02089cb7dcec">&#9670;&nbsp;</a></span>operator+()</h2>
<a id="afac99b67f0686e836fafb1e2f0bd41b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afac99b67f0686e836fafb1e2f0bd41b7">&#9670;&nbsp;</a></span>operator+()</h2>

<div class="memitem">
<div class="memproto">
@@ -150,7 +150,7 @@ template&lt;class _Ty &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void resumef::scheduler_t::operator+ </td>
<td class="memname">task_t* resumef::scheduler_t::operator+ </td>
<td>(</td>
<td class="paramtype">_Ty &amp;&amp;&#160;</td>
<td class="paramname"><em>coro</em></td><td>)</td>
@@ -173,6 +173,13 @@ GO用于启动一个所有变量按值捕获的lambda。 </p><dl class="params">
</table>
</dd>
</dl>
<dl class="retval"><dt>返回值</dt><dd>
<table class="retval">
<tr><td class="paramname">task_t*</td><td>返回代表一个新协程的协程任务类。<br />
</td></tr>
</table>
</dd>
</dl>

</div>
</div>

+ 59
- 0
librf/src/current_scheduler.h View File

@@ -117,4 +117,63 @@ namespace resumef
return {};
}
/**
* @brief 获得本协程的task_t对象。
*/
struct get_current_task_awaitor
{
bool await_ready() const noexcept
{
return false;
}
template<class _PromiseT, typename = std::enable_if_t<traits::is_promise_v<_PromiseT>>>
bool await_suspend(coroutine_handle<_PromiseT> handler)
{
_PromiseT& promise = handler.promise();
auto* parent = promise.get_state();
state_base_t * state = parent->get_root();
scheduler_t* sch = state->get_scheduler();
this->_task = sch->find_task(state);
return false;
}
task_t* await_resume() const noexcept
{
return _task;
}
private:
task_t* _task;
#ifdef DOXYGEN_SKIP_PROPERTY
public:
/**
* @brief 获得当前协程的task_t指针。
* @details 立即返回,没有协程切换和等待。
* 推荐使用 current_task() 宏替代 co_await get_current_task()。
* @return [co_await] task_t*
* @note 本函数是resumef名字空间下的全局函数。由于doxygen使用上的问题,将之归纳到 get_current_task_awaitor 类下。
*/
static get_root_state_awaitor get_current_task() noexcept;
/**
* @brief 获得当前协程的task_t指针。
* @details 立即返回,没有协程切换和等待。
* 这是一条宏函数,等同于 co_await get_current_task()。
* @return task_t*
* @note 由于doxygen使用上的问题,将之归纳到 get_current_task_awaitor 类下。
*/
static task_t* current_task() noexcept;
#endif //DOXYGEN_SKIP_PROPERTY
};
/**
* @brief 获得当前协程的task_t指针。
* @details 立即返回,没有协程切换和等待。
* 推荐使用 current_task() 宏替代 co_await get_current_task()。
* @return [co_await] task_t*
*/
inline get_current_task_awaitor get_current_task() noexcept
{
return {};
}
}

+ 1
- 1
librf/src/def.h View File

@@ -1,6 +1,6 @@
#pragma once
#define LIB_RESUMEF_VERSION 20908 // 2.9.8
#define LIB_RESUMEF_VERSION 20909 // 2.9.9
namespace resumef
{

+ 1
- 0
librf/src/macro_def.inl View File

@@ -14,3 +14,4 @@

#define current_scheduler() (co_await ::resumef::get_current_scheduler())
#define root_state() (co_await ::resumef::get_root_state())
#define current_task() (co_await ::resumef::get_current_task())

+ 6
- 1
librf/src/rf_task.cpp View File

@@ -2,7 +2,12 @@
namespace resumef
{
task_base_t::~task_base_t()
task_t::task_t()
{
}
task_t::~task_t()
{