关于FRunnable 开启线程,网络上有很多文章,但是对如何安全的结束文章却没有详细的特殊说明,我再使用线程时,又是会出现意外的奔溃。所以在这里特意记录一下
- Runnable使用,首先继承FRunnable,实现 Init,Run,Exit,Stop 方法
- 使用端 通过 FRunnableThread::Create 函数 创建
- 安全的删除线程
//方式一 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