【UE·多线程】UE4多线程开发

 多线程开发在日常开发中非常常用,UE4 C++也提供了多线程操作,虽然UE4沿用了C++11的标准,但多线程并没有使用std::thread,而是自己封装了RunnableAsyncTask以及TaskGraph这三个可以供我们使用。他们的本质相同但用法不同

Runnable:标准多线程,创建一个继承自FRunnable的类,把这个类要执行的任务通过FRunnableThread::Creat() 分发给真正的线程去执行(FRunnableThread也是一个平台的上层抽象,在Windows平台下时为FRunnableThreadWin它会调用Windows API来创建线程,它才是真真正创建的线程,持有FRunnable实例)

AsyncTask:是基于Runnable的一层封装,使用会更加方便。

TaskGraph则是基于任务的多线程(Task-Based),可以有效控制任务的顺序性。接下来将简单介绍这三种线程的使用。

UE4中FRunnable的声明如下

class CORE_API FRunnable
{
public:
	virtual bool Init()
	{
		return true;
	}
	virtual uint32 Run() = 0;
	virtual void Stop() { }
	virtual void Exit() { }
	virtual class FSingleThreadRunnable* GetSingleThreadInterface( )
	{
		return nullptr;
	}
	virtual ~FRunnable() { }
};

通过以上代码可以看到,FRunnable中有一个纯虚函数Run,我们要实现自己的多线程操作,需要继承FRunnable类

你可能感兴趣的:(虚幻C++,ue4,c++,开发语言)