Simplicity is the ultimate form of sophistication ! - Leonardo Da Vinci
UnrealEngine有了跨平台的线程、线程池和TaskGraph,再来看看Async/ParalleFor和Future/Promise的实现,由衷的感受下上面的话:简约是复杂的最终形式。这些操作实现都不复杂,却有着强大的能力,让异步并发代码写起来简洁易懂。下面简单介绍下:
- Future & Promise的实现和简单用法
- Async系列接口的用法
- Paralle接口的用法
另外这里相关接口可以类比C++标准库中的概念。UE中这些接口是基于之前提到的几种并发机制实现的,废话不多说,上代码,看注释。
ALL BITCOIN PRIVATE KEYS
BITCOIN WALLET SIGN UP
Future和Promise的概念,和C++标准中的std::future/std::promise
类似:
- Future - 一个会在未来某个点返回的值
- Promise - 一个异步函数,在某个并发执行体中设置,然后Future变得有效
实现比较简单,类图如下:
TPromise<ResultType>
- PromiseTFuture<ResultType>
- FutureTFutureState<ResultType>
- Future和Promise共享的状态。- Promise创建时创建一个State
GetFuture()
时返回一个共享该状态的Future对象- 基于FEvent实现,等待和触发