UE4 FRunnable和FRunnableThread方式,安全的结束线程

关于FRunnable 开启线程,网络上有很多文章,但是对如何安全的结束文章却没有详细的特殊说明,我再使用线程时,又是会出现意外的奔溃。所以在这里特意记录一下

  1. Runnable使用,首先继承FRunnable,实现 Init,Run,Exit,Stop 方法
  2. 使用端 通过 FRunnableThread::Create 函数 创建
  3. 安全的删除线程  
    //方式一
    	if (mRunnable&&mRunnableThread) //mRunnable 实例,mRunnableThread 创建的线程
    	{
    		mRunnableThread->Suspend(true); 暂停当前线程
    		mRunnable->bStop = true;        标志位停止
    		mRunnableThread->Suspend(false); 继续线程
    		mRunnableThread->WaitForCompletion();  等待线程运行结束
    		mRunnableThread->Kill(true);     将线程删除
    		delete mRunnable;                删除 mRunnable 实例
    	}
    //方式二
    
    头文件 申明 FThreadSafeCounter StopTaskCounter;
    线程开启时  StopTaskCounter.Set(0); 设初值为0;
    
    Run函数中   uint32 FRunnableM::Run()
                {
                    while(StopTaskCounter.GetValue()==0) //判断值
    	             {
    			         FPlatformProcess::Sleep(3);
    	             }
    	             return 0;
                }
                void FRunnableM::Stop()
                    {
    	                StopTaskCounter.Increment(); //改变数值 返回新值
                    }
    结束线程
    
            mRunnable->Stop();  //结束改变标志位
    		mRunnableThread->WaitForCompletion(); 本线程运行结束
    		mRunnableThread->Kill(true);          kill 线程
    			
    		delete mRunnable;                     delete runnable

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值