Tob*_*olm 19 c++ asynchronous future c++14
C++ 14的提议之一是Resumable Functions,它为C++提供了当前使用async/await机制的C#.基本思想是在等待异步操作完成时可以暂停一个函数.当异步操作完成时,可以在暂停的位置恢复该功能.这是以非阻塞方式完成的,因此不会阻止调用可恢复函数的线程.
我不清楚函数将在哪个上下文(线程)中恢复.它会被暂停函数的线程恢复(这是我在C#中完成的方式),还是使用另一个线程?
如果它被暂停的线程恢复,那么线程是否必须处于某种特殊状态,或者调度程序是否会处理它?
引用 N3564 的话:
\n\n\n\n\n挂起后,可恢复函数可能会被运行时的调度逻辑恢复,并最终完成其逻辑,此时它执行 return 语句(显式或隐式)并将 function\xe2\x80\x99s 结果值设置为占位符。
\n\n因此应该注意的是,函数\xe2\x80\x99从外部(调用者)和内部观察到的行为之间存在不对称性:外部视角是函数在第一个挂起点返回一个 future 类型的值,而内部观点是该函数通过 return 语句返回 T 类型的值,返回 future/shared_future 的函数的行为仍然有些不同。
\n\n可恢复函数可以在暂停执行后恢复后继续在另一个线程上执行。
\n
这本质上意味着
\n\nfuture<T>不必须处于就绪状态)。| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |