当前位置: 首页 > news >正文

龙岗网站建设公司哪家好东莞app培训网站建设

龙岗网站建设公司哪家好,东莞app培训网站建设,网站模板带有sql后台下载,网络经营网址怎么注册目录 概念 使用示例1 使用示例2 概念 FGraphEventRef 本质上是对一个异步任务或者一组相关异步任务在虚幻引擎任务图系统中的一种引用#xff08;reference#xff09;。虚幻引擎的任务图系统用于高效地调度和管理各种异步任务#xff0c;协调它们的执行顺序以及处理任务…目录 概念 使用示例1 使用示例2 概念 FGraphEventRef 本质上是对一个异步任务或者一组相关异步任务在虚幻引擎任务图系统中的一种引用reference。虚幻引擎的任务图系统用于高效地调度和管理各种异步任务协调它们的执行顺序以及处理任务之间的依赖关系等而 FGraphEventRef 就是开发者与这个任务图系统交互的一个关键 “接口”通过它可以实现对任务的创建、跟踪以及依赖管理等操作。 使用示例1 先创建并执行一个简单的异步任务SimpleEvent等待其完成后再批量创建 20 个异步任务存入 SimpleEventArray 中最后等待这 20 个任务全部完成以此体现任务图系统在协调多线程任务的执行顺序以及处理任务之间依赖关系的作用。 代码如下所示 void UThreadSubsystem::GraphEvent() {FGraphEventRef SimpleEvent FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEvent Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEvent End));});check(!SimpleEvent-IsComplete());SimpleEvent-Wait();FGraphEventArray SimpleEventArray;for (size_t i 0; i 20; i){SimpleEventArray.Add(FFunctionGraphTask::CreateAndDispatchWhenReady([this,i]() {FString Info1 FString::Printf(TEXT(SimpleEvent Start -- %d), i);PrintLogInThread(Info1);FPlatformProcess::Sleep(i%3);FString Info2 FString::Printf(TEXT(SimpleEvent End -- %d), i);PrintLogInThread(Info2);}));}FTaskGraphInterface::Get().WaitUntilTasksComplete(SimpleEventArray); }void UThreadSubsystem::PrintLogInThread(FString Info) {AsyncTask(ENamedThreads::GameThread, [Info]() {UE_LOG(LogTemp, Warning, TEXT(ThreadLog:[%s]), *Info);}); } 在第147行代码~151行代码中通过 FFunctionGraphTask::CreateAndDispatchWhenReady 函数创建一个异步任务并将返回的 FGraphEventRef 对象赋值给 SimpleEvent。在该异步任务的 lambda 表达式中通过调用 FPlatformProcess::Sleep(3); 让线程休眠 3 秒来模拟任务执行过程中的耗时操作。 第152行代码用于检查在创建任务后任务是否立即就完成了正常情况下刚创建的任务应该还未执行完所以这里预期 IsComplete 返回 false如果出现不符合预期的情况即任务已经完成check 宏会触发断言失败有助于在开发阶段发现可能的逻辑错误。 第153行代码调用 SimpleEvent-Wait(); 会使当前线程阻塞一直等待这个异步任务执行完毕确保后续代码在该任务完成后才继续执行实现了简单的任务同步机制保证了任务执行顺序上的先后关系。 第155行代码创建了一个 FGraphEventArray 类型的数组 SimpleEventArray用于存放多个 FGraphEventRef 对象每个对象对应一个异步任务。 第156~167行代码通过 for 循环创建20个异步任务 第169行代码通过调用 FTaskGraphInterface::Get().WaitUntilTasksComplete(); 函数让当前线程阻塞等待直到 SimpleEventArray 数组中存放的所有 20 个异步任务都执行完毕实现了对多个并行任务的同步等待功能。 执行结果如下 使用示例2 该示例主要利用虚幻引擎的任务图系统来创建多个异步任务并通过设置任务之间的依赖关系实现特定的任务执行顺序。要实现的任务执行顺序如下图所示我们需要先执行TaskATaskA执行完毕后开始同时执行TaskA1和TaskBTaskB执行完毕后再执行TaskC在TaskA1和TaskC都执行完毕的基础上再执行TaskD。 代码如下所示  void UThreadSubsystem::BatchGraphEvent() {FGraphEventRef SimpleEventA FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEventA Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEventA End));});FGraphEventRef SimpleEventB FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEventB Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEventB End));}, TStatId{}, SimpleEventA);FGraphEventRef SimpleEventC FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEventC Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEventC End));}, TStatId{}, SimpleEventB);FGraphEventRef SimpleEventA1 FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEventA1 Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEventA1 End));}, TStatId{}, SimpleEventA);FGraphEventArray Prerequisite;Prerequisite.Add(SimpleEventA1);Prerequisite.Add(SimpleEventC);FGraphEventRef SimpleEventD FFunctionGraphTask::CreateAndDispatchWhenReady([this]() {PrintLogInThread(TEXT(SimpleEventD Start));FPlatformProcess::Sleep(3);PrintLogInThread(TEXT(SimpleEventD End));}, TStatId{}, Prerequisite);SimpleEventD-Wait();PrintLogInThread(TEXT(All Tasks Completed)); } 第174~178行代码创建了一个异步任务 SimpleEventA 第180~184行代码创建了一个异步任务 SimpleEventB并设置任务 SimpleEventB 设置了依赖于任务 SimpleEventA 第186~190行代码创建了一个异步任务 SimpleEventC并设置任务 SimpleEventC 设置了依赖于任务 SimpleEventB 第192~196行代码创建了一个异步任务 SimpleEventA1并设置任务 SimpleEventA1 设置了依赖于任务 SimpleEventA 第198~206行代码首先创建了一个 FGraphEventArray 类型的数组 Prerequisite并将SimpleEventA1和 SimpleEventC 这两个 FGraphEventRef 对象添加到其中以此表示一组前置任务条件。然后创建任务 SimpleEventD 时将 Prerequisite 作为参数传入意味着SimpleEventD依赖于 SimpleEventA1 和 SimpleEventC 这两个任务只有当这两个任务都执行完成后SimpleEventD才会开始执行。  第208行代码通过调用 SimpleEventD-Wait(); 让当前线程阻塞等待直到任务SimpleEventD执行完毕。由于 SimpleEventD 依赖于前面多个任务所以实际上是等待整个任务链上的所有相关任务都完成后此阻塞才会解除。 执行结果如下 如果要统计所有任务执行花费时间可以通过添加如下代码实现 执行结果如下总共花费12s和预想的一样。
http://www.dnsts.com.cn/news/144775.html

相关文章:

  • 网站页面框架设计影响用户wordpress媒体库目录
  • 建立互联网公司网站phpcms调用网站名称
  • 深圳手机商城网站设计价格贵港网站建设兼职
  • 网络游戏网站制作网站建设渠道合作
  • 便宜网站建设模板网站用dw做网站 的过程
  • 常德市网站建设sdcms网站源码
  • 如何投诉做网站的公司重庆在线app
  • 微信公众平台怎么做微网站专注高密做网站哪家强
  • 企业宣传网站建设需求说明书的模板wordpress 文章 定时
  • 顺德新网站建设360门户网站怎样做
  • 佛山市多语言营销型网站建站wordpress集团网站
  • 汕头免费建站实用网站设计步骤
  • 企业网站建设排名口碑网页设计培训费用多少
  • 目前做美术的网站以及app网站底部显示百度站点地图
  • 阿里企业的网站建设吾爱wordpress
  • 定制企业网站建设wordpress访问速度慢
  • 华强北 网站建设怎么做软件开发
  • 高端网站建设联系方式旅游网站的后台管理系统怎么做
  • 广州建网站哪家好做网站的教程
  • 做静态网站多少钱wordpress更换主题失败
  • 关于做网站的调查问卷揭阳网页制作公司
  • 英文域名在哪个网站查询app优化网站建设
  • 无锡网站营销公司wordpress土豆
  • 旅游网站开发的意义是什么嘉兴秀洲区建设局网站
  • 网站管理文档怎么写专业类搜题软件
  • 可不可以异地建设网站龙口建网站公司哪家好
  • 网站建设属于行政那个模块网站建设与管理学什么
  • 鞍山专业做网站公司怎么区别做pc端和手机端网站
  • 网站建设外出考察报告VR网站建设价格
  • 360的网站排名怎么做绿色在线网站