x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Unable to run a thread without freezing the game

Hello, I'm trying to run a loop inside a thread, but I'm not being able to understand why my game freezes when is running the loop.

I never tried using threads before, so I'm still confused about how this works.

This is my CustomThread.h

 // Fill out your copyright notice in the Description page of Project Settings.
  
 #pragma once
  
 #include "CoreMinimal.h"
 #include "Runtime/Core/Public/HAL/Runnable.h"
  
 class EXPERIMENTS_API CustomThread : public FRunnable
 {
  
     FRunnableThread* Thread;
    
  
 public:
     CustomThread(int32 Limit);
     ~CustomThread();
    
     static CustomThread* LoopNumbers(int32 InLimit);
  
     //~ Begin FRunnable Interface.
     virtual bool Init();
     virtual uint32 Run();
     virtual void Stop();
     virtual void Exit();
     //~ End FRunnable Interface
  
     bool IsFinished() const
     {
         return (Numbers == Limit) ? true : false;
     };
  
 private:
     int32 Numbers;
     int32 Limit;
 };



This is my CustomThread.cpp

 // Fill out your copyright notice in the Description page of Project Settings.
  
 #include "Public/CustomThread.h"
 #include "Runtime/Core/Public/HAL/RunnableThread.h"
 #include "Runtime/Core/Public/GenericPlatform/GenericPlatformProcess.h"
 #include "Runtime/Core/Public/HAL/Event.h"
  
 CustomThread::CustomThread(int32 Limit) :
     Numbers(0),
     Limit(Limit)
 {
     Thread = FRunnableThread::Create(this, TEXT("CustomThread"),0,TPri_BelowNormal);
 }
  
 CustomThread::~CustomThread()
 {
 }
  
 CustomThread* CustomThread::LoopNumbers(int32 InLimit)
 {
     new CustomThread(InLimit);
     return 0;
 }
  
 bool CustomThread::Init()
 {
     UE_LOG(LogTemp, Warning, TEXT("Thread STARTED!!"));
     return true;
 }
  
 uint32 CustomThread::Run()
 {
     while (!IsFinished())
     {
         Numbers++;
         UE_LOG(LogTemp, Warning, TEXT("%s"), *FString::FromInt(Numbers));
     }
    
     return 0;
 }
  
 void CustomThread::Stop()
 {
     UE_LOG(LogTemp, Warning, TEXT("Thread STOP!!"));
 }
  
 void CustomThread::Exit()
 {
     UE_LOG(LogTemp, Warning, TEXT("Thread EXIT!!"));
  
     if (Thread)
     {
         delete Thread;
         Thread = NULL;
     }
 }


Thank you!

Product Version: UE 4.20
Tags:
more ▼

asked Nov 18 '18 at 04:18 PM in C++ Programming

avatar image

IvoMR
18 1 5

(comments are locked)
10|2000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question