Threads not threading?

As nobody knows how to make multi-threading with FRunnables(!) I decided to make it with simple C++ threads. And…They’re blocking main thread too.
What’s wrong? Maybe I’m doing something improperly? Client just showing me black screen, and spamming in log.
Engine version 4.8.
Code is:

   this->running = true;
   static std::thread t(startLoop, this);
   this->trd = &t;

void Client::startLoop(Client* instance)
    UE_LOG(TempLog, Warning, TEXT("Running thread...")); // For debug, this is spamming
   //do stuff;

And calling constructor of Client class in overrided BeginPlay() in actor.

I am using Unreal’s threads for a custom TCP client with no issue. I have a Client with two FRunnable and two FRunnableThread instances. The Client has a Start() and Stop() method:

In the Start() method of my Client, I create and start the threads:

FRunnable *sender = new Sender(socket, sendQueue);
FRunnableThread *senderThread = FRunnableThread::Create(sender, TEXT("Sender"));

FRunnable *receiver = new Receiver(socket, receiveQueue);
FRunnableThread *receiverThread = FRunnableThread::Create(receiver, TEXT("Receiver"));

My FRunnable’s do sleep, but I am using the following function:


My TCP Client is owned by an Information Actor (AInfo). In the BeginPlay() method of my Actor, I construct and Start() my TCP Client:

void AMyInfoActor::BeginPlay() {
        client = TSharedPtr<Client>(new Client(IpAddress, Port));

This approach is working well for me. Not sure what issue you are having exactly, but maybe my example will help you.

Your example is working, thanks!