导语
在开发过程中,有时候会遇到需要使用线程相关逻辑,比如网络相关,动态加载资源的,希望不要影响主线程的运行。
版本:UE4.25
UE4遵循C++11的标准,但是他并没有使用std::thread,而是自己实现了一套多线程机制。
在UE4里面创建多线程的三种方式,我们会分三篇来分析和使用:
- 继承FRunnable接口创建一个线程任务,适用于复杂运算
- 直接创建AsyncTask来调用线程池里面空闲的线程
- 通过TaskGraph系统来异步完成一些自定义任务
这三种方式本质相同,但是用法不同。
本篇尝试使用FRunnable。
案例说明
给定一个txt文件路径数组,通过异步的方式读取文件,并且返回文件的内容数组。
FRunnable分析
FRunnable 是线程的执行体,提供相应的接口。FRunnable需要依附与一个FRunnableThread对象,才能被执行,
真正的线程其实是FRunnableThread,不同平台的线程都继承自他,如FRunnableThreadWin,里面会调用Windows平台的创建线程的API接口。
1 | // Windows平台的实现类: |
1 | // Runtime\Core\Public\HAL\Runnable.h |
实现步骤
创建TxtReadTask.h 重新生成项目代码。
1 | // TxtReadTask.h |
未完待续。。。