ue5 c++ 多线程 demo
时间: 2023-09-16 13:08:01 浏览: 244
以下是一个基本的使用C++11多线程的示例代码,它使用了UE5中的FRunnable类来创建线程。该示例代码创建了两个线程,分别输出“Hello from thread 1!”和“Hello from thread 2!”。
```
#include "CoreMinimal.h"
#include "HAL/Runnable.h"
class FMyThread : public FRunnable
{
public:
virtual bool Init() override
{
return true;
}
virtual uint32 Run() override
{
FString ThreadName = FString::Printf(TEXT("Thread %d"), FPlatformTLS::GetCurrentThreadId());
UE_LOG(LogTemp, Warning, TEXT("%s: Hello from thread!"), *ThreadName);
FPlatformProcess::Sleep(1.0f);
return 0;
}
virtual void Stop() override
{
}
virtual void Exit() override
{
}
};
void StartThreads()
{
FRunnableThread* Thread1 = FRunnableThread::Create(new FMyThread(), TEXT("Thread1"));
FRunnableThread* Thread2 = FRunnableThread::Create(new FMyThread(), TEXT("Thread2"));
Thread1->WaitForCompletion();
Thread2->WaitForCompletion();
}
```
在上面的代码中,FMyThread类是一个实现了FRunnable接口的自定义类,它包含了线程要执行的代码。在Run()方法中,我们输出了线程的名称和一条简单的消息,然后让线程休眠了1秒钟,以模拟一些计算密集型的操作。
StartThreads()函数创建了两个线程Thread1和Thread2,并等待它们都执行完毕后才退出。可以在UE5的任何类中调用StartThreads()函数来启动这两个线程。
需要注意的是,使用多线程时应该小心,因为它可能会有一些潜在的问题,例如线程之间的竞争条件、死锁等。在实际应用中,应该仔细考虑这些问题并采取适当的措施来避免它们。
阅读全文