UE4笔记-进程/线程/网络/IO模块的相关问题记录

2023-11-06

吐槽:如果有Qt的开发经验,会发现其实在比较底层编程理念UE4和Qt极其相识.很多类名和用法甚至都是相同的.

Q.创建线程类:

  UE4文档没有特别介绍关于线程模块的文章,这里自己简单记录一下,备查.

 

目前来说UE4的线程模块还是比较简陋的,命名风格像C#和Qt的结合体-_,-

 

UE4的线程的有两种比较常用的方式:

1.异步编程便捷帮助函数

2.自定义线程类

  有复杂线程逻辑、涉及线程通讯的,的用自定义类.简单的用便捷帮助函数即可

 

说明:

1.异步编程便捷帮助函数

跟C#的异步编程Task类基本一致.

主要涉及的相关函数和类:

 

Async wait
AsyncThread wait
AsyncTask wait
AsyncPool wait

 

 

 

 

 

例子:

wait

2.自定义线程类:

自定义线程类:一般UE4线程主要涉及FRunnableThread类和FRunnable类

FRunnableThread用于管理线程实例(如创建、暂停,销毁等)

FRunnable则是用于实现线程逻辑的具体实现(继承方式)

有三个虚函数和一个纯虚函数

    Init() 初始化调用

    Stop() //暂停时调用

  Exit() 结束时调用
  Run() //运行时调用
会按照线程状态依次执行.

用到线程的话,难免会涉及到互斥锁:

UE4的互斥锁是:FCriticalSection类。

FCriticalSection还有与之相关个FScopeLock类

FScopeLock主要是防止线程异常抛出异常死锁的.

 最后说明一下,和Qt/C# 一样,只有Run函数体里面的代码和New的变量,属于子线程.而FRunnable类对象本身是属于创建他的线程的

这里列一个我用于IO本地图片的Thread栗子:

.h

class FThread_IO : public FRunnable
{
public:
    FThread_IO();
    ~FThread_IO();
public:
    bool Init() override{ return true; }
    uint32 Run() override;
    void Stop() override{} 
   void Exit override();
  TArray<FData_LoadTexture2DCommand> arr_waitLoadFile; 
};

 

.cpp

FThread_IO::FThread_IO()
{
}

FThread_IO::~FThread_IO()
{
    this->Stop();
}

uint32 FThread_IO::Run()
{
    /** 进行本地图片的IO读取处理 线程 */
    static int i= 1;
    static int iWidth, iHeight;
    static UIOHelper *helper = NewObject<UIOHelper>();
    while (true)
    {
        FCriticalSection Thread_lock;
        if (arr_waitLoadFile.Num() > 0)
        {
            i++;
            Thread_lock.Lock();
            bool bvaild = false;
            auto command = arr_waitLoadFile[0];
            arr_waitLoadFile.RemoveAt(0);
            auto tue = helper->LoadTexture2D_FromFile(command.target_UIItem->ImageLocalFilePath, EJoyImageFormats::JPG, bvaild, iWidth, iHeight);

            command.target_UIItem->SetImage_texture(tue);
            GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT(" load finished : %d"), arr_waitLoadFile.Num()));
            Thread_lock.Unlock();
        }
        else
        {
            FPlatformProcess::Sleep(0.03f);
        }
    }
    

    return 0;
}

void FThread_IO::Exit()
{
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT(" thread finished"));
}

创建线程实例:

FString newThreadName("MyThread");
FThread_IO *thread_ResReader = nullptr;
auto mgr = FRunnableThread::Create(thread_ResReader, newThreadName.GetCharArray().GetData(), 0, TPri_BelowNormal);

 

Q.创建进程,打开额外程序方法:

FPlatformProcess::CreateProc(TEXT("程序路径");

Q.UE4进程通讯(Pipe):

以Window net form 为例:

wait

转载于:https://www.cnblogs.com/linqing/p/5767359.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4笔记-进程/线程/网络/IO模块的相关问题记录 的相关文章

  • WPF编程,Live Charts使用说明(4)——主题

    可以为应用程序中的任何图表设置默认样式 必须根据需要选择颜色 大小和笔触 色彩 这组颜色将是系列中的默认颜色 当系列数大于主题中的颜色数时 这些颜色将重复 材质 基于Google的材质设计 基于MoedernUi设计的Metro 蓝色蓝调
  • 打印沙漏 C语言

    题目 本题要求你写个程序把给定的符号打印成沙漏的形状 例如给定17个 要求按下列格式打印 所谓 沙漏形状 是指每行输出奇数个符号 各行符号中心对齐 相邻两行符号数差2 符号数先从大到小顺序递减到1 再从小到大顺序递增 首尾符号数相等 给定任
  • android Intent常用标识

    Intent常用标识 FLAG ACTIVITY BROUGHT TO FRONT 这个标志一般不是由程序代码设置的 如在launchMode中设置singleTask模式时系统帮你设定 FLAG ACTIVITY CLEAR TOP 如果
  • 简单有限状态机代码实现

    学习链接 Unity有限状态机编写 木子微冷 博客园 实现思路 1 创建状态基类BasState 所有具体状态类继承该类 基类有3个方法 进入状态 状态中 离开状态 2 创建管理类来管理状态机 StateMgr 并实现状态机的各个方法 状态
  • MariaDB数据库

    MariaDB数据库是MySQL数据库的一个分支 仍是一个开放的数据库 数据和表定义文件是兼容的 所有客户端 API 和协议都是兼容的 文件名 二进制文件和路径在MySQL和MariaDB上是相同的 端口和套接字是相同的 所有MySQL连接
  • 接口测试问题以及经验合集

    一 接口测试常见问题 前景提要 由于本人测试小白 可能所遇问题都较为基础 测试小白可以参考 Q1 postman会报connect ECONNREFUSED jemeter会报org apache http conn HttpHostCon
  • 14:00面试,14:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到5月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • async_retrying

    from async retrying import retry import aiohttp import asyncio retry attempts 6 async def fetch print 1 async with aioht
  • 南京特殊教育师范:校外如何登陆Webplus站群发布文章

    因为网络安全需要 Webplus站群2021年完成三级等保工作 为了满足三级等保整改要求 网站群后台禁止外网访问 如果在家需要发布文章 可以使用学校的VPN进入后台 发布文章 1 访问学校的WebVPN https vpn njts edu
  • javascript小说阅读器分页算法的实现

    好久好久不写代码了 也好久没更新博客了 这次就和大家分享一个电子书阅读器分页的算法吧 像一些主流的阅读器 如QQ阅读 iReader等 都实现了txt文档分页显示的功能 打开一个txt文档可以快速把文档分割成若干页 每页文字正好铺满屏幕 点
  • ctfshow web入门 命令执行34-38

    1 web34 和web33差不多 过滤了冒号 第一个为官方解法 payload c include GET 1 gt 1 php filter read convert base64 encode resource flag php c
  • 立一个小小的flag

    距离上次写博客已经很久了 下个月也是我入职一周年了 很久没有沉下心好好写一些文章 内心还有有点不安的 准备接下来花点时间好好写点东西 把工作学习中的事情记录下来 希望对你我都有帮助 17年还是大三的时候 每天都会坚持学习写博客 沉淀自己学到
  • 基础实验篇

    导读 uORB是PX4 Pixhawk系统中非常重要且关键的模块之一 是用于无人机模块间通信的协议机制 本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验 一 基础实验篇 uORB消息读写与自定义实验 一 ect Request
  • ctfshow--web入门(web101--web115&web123&web125-web133)

    ctfshow web入门 web101 web115 web123 web125 web133 web101
  • 什么是CSRF

    目录 1 CSRF是什么 2 CSRF漏洞检测 3 防御CSRF攻击 3 1 验证 HTTP Referer 字段 3 2 在请求地址中添加 token 并验证 3 3 在 HTTP 头中自定义属性并验证 1 CSRF是什么 CSRF Cr
  • 结合高阶函数聊聊useMemo和useCallback

    使用useMemo可以实现useCallback useCallback fn deps 其实相当于 useMemo gt fn deps 所以说 使用useMemo完全可以实现useCallback useCallback functio
  • 如何用MODIS数据在TIMESAT中提取物候参数

    感觉研究植被物候的帖子好少呀 也找不到关于TIMESAT的操作教程 这里便记载我学习植被物候信息提取的学习笔记 下面是我综合了很多零零散散的信息学习到的东西 但是还是有很多看不明白的地方 比如一些参数的设置上面 希望有知道的可以让我学习一下
  • Spring Boot + Jpa(Hibernate) 架构基本配置

    1 基于springboot 1 4 0 RELEASE版本测试 2 springBoot Hibernate Druid Mysql servlet jsp 不废话 直接上代码 一 maven的pom文件
  • Git 常用指令

    Git 常用指令 bashrc 文件 用于输出git提交日志 alias git log git log pretty oneline all graph abbrev commit 用于输出当前目录所有文件及基本信息 alias ll l
  • pandas数据预处理------去除‘特征重复’的2种方法

    常见的数据重复包括 1 记录重复 一个或多个特征的某条记录的值完全相同 2 特征重复 存在一个或者多个特征名称不同 但数据完全相同的情况 去除特征重复的2种方法 1 通过相似度矩阵去重 要去除连续的特征重复 可以利用特征间的相似度将两个相似

随机推荐

  • permission denied while trying to connect to the Docker daemon socket 错误

    安装 docker 执行错误如下 docker ps permission denied while trying to connect to the Docker daemon socket at unix var run docker
  • 做一个统计单词数目的Atom插件

    本文是Atom 教程 制作单词计数插件的简化介绍 所有代码都来自这篇文章 如果希望参考详细的文档 请直接查看原文 这篇文章用一个简单的小例子 为我们讲解了如何编写一个Atom编辑器插件 该例子使用的是CoffeeScript 所以为了更好地
  • leetcode----JavaScript 详情题解(2)

    目录 2629 复合函数 2631 分组 2634 过滤数组中的元素 2635 转换数组中的每个元素 2637 有时间限制的 Promise 对象 2648 生成斐波那契数列 2649 嵌套数组生成器 2665 计数器 II 2666 只允
  • 可重复读输入流的问题

    为了统一签名 需要在controller之前读json输入流数据 controller的参数绑定是直接读inputStream 但一般httpServletRequest只能读一次 解决方法是 在filter中直接读一次inputStrea
  • 【7-4 h0018.金币 (20 分)】思路清晰,c++实现,分分钟解决

    7 4 h0018 金币 20 分 国王以金币支付给他忠诚的骑士 在他服役的第一天 骑士会得到一枚金币 在接下来的每两天 服务的第二和第三天 骑士会收到两枚金币 在 在接下来的三天里 第四 第五和第六天 骑士每一天都会得到三枚金币 在接下来
  • HTML中怎么设置图片的位置和大小

    其他的也不多废话了直接上代码 img src fan jpg width 800 height 800
  • python批量爬取公众号文章

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 作者 舴艋的舟 PS 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群
  • js逆向:rpc远程调用

    websocket python代码 服务端 先开启这个 import asyncio import websockets connected set async def server websocket connected add web
  • Linux系统连接华为oceanstor数据存储

    Linux系统连接华为oceanstor数据存储 一 登录检查oceanstor数据存储 二 配置linux使用的数据储存 1 创建LUN 2 创建Lun组 3 创建主机 4 创建主机组 5 创建映射关系 三 Linux客户端操作 1 查看
  • 「建议收藏」Pycharm使用教程(非常详细,非常实用)

    Pycharm使用教程 1 Jetbrains家族和Pycharm版本划分 pycharm是Jetbrains家族中的一个明星产品 Jetbrains开发了许多好用的编辑器 包括Java编辑器 IntelliJ IDEA JavaScrip
  • Atcoder Beginner Contest 300

    A N choice question AC代码 include
  • 【Java基础11】面向对象、面向过程、类、对象、封装

    一 面向对象和面向过程 面向对象 以对象为单位 通过调度组合不同的对象来完成某一个功能 面向过程 以步骤为单位 一步一步完成某一个具体的功能 二 类 1 类的定义 class 类名 在类中定义属性 方法 class student Stri
  • pytorch 多个模型 求平均

    from collections import OrderedDict import torch from models faceland d import FaceLanndInference d if name main model F
  • Vite 打包体积分析,性能提升不再困扰

    其实这个问题最好改成 rollup 打包体积分析 但是为什么我会取这个名字呢 其实这主要是由于我的习惯性引起的 因为太久没用一个东西 如果遇到问题 肯定会去围绕它自身去进行搜索 例如遇到 vite 打包分析相关问题 就会在 google 搜
  • MinIO从信息泄漏到RCE

    文章目录 信息泄露 漏洞利用 漏洞分析 漏洞修复 RCE 漏洞分析 参考文章 信息泄露 漏洞利用 如果MinIO以集群方式部署 存在信息泄露漏洞 攻击者可以通过HTTP请求获取目标进程的所有环境变量 包括MINIO SECRET KEY和M
  • 计算机网络——分层的体系结构(OSI模型/五层协议栈)

    一 基础知识 计算机网络 计算机网络是一个非常复杂的系统 涉及许多组成部分 主机 hosts 路由器 routers 各种链路 links 应用 applications 协议 protocols 硬件 软件 网络体系结构的特点 1 网络体
  • [高级数据结构C++] 树状数组进阶(求逆序对的个数)

    算法竞赛 file author jUicE g2R qq 3406291309 彬 bin 必应 一个某双流一大学通信与信息专业大二在读 brief 一直在算法竞赛学习的路上 copyright 2023 9 COPYRIGHT 原创技术
  • ROS模型构建、定位导航

    利用URDF或者Xacro文件 以XML的方式描述小车底盘 camera laser Kinect等基本机器人结构 通过Gazebo或Rviz将文件解析为图形化的机器人模型 其中很多代码可以从网络上找到 主要注意参数和坐标系的设置 例如在K
  • CSS之美化网页 span标签 与 div标签

    CSS高级特性 我们大家在学习CSS之前 肯定已经接触过了HTML了吧 那么我们为什么还要学习CSS呢 首先哈 CSS可以有效的传递页面信息 使用CSS美化过的页面文本 非常漂亮 美观 并且可以突出重点 使用户看到页面的主要内容 具有良好的
  • UE4笔记-进程/线程/网络/IO模块的相关问题记录

    吐槽 如果有Qt的开发经验 会发现其实在比较底层编程理念UE4和Qt极其相识 很多类名和用法甚至都是相同的 Q 创建线程类 UE4文档没有特别介绍关于线程模块的文章 这里自己简单记录一下 备查 目前来说UE4的线程模块还是比较简陋的 命名风