From 2d4b871401ace5a54eaff1cbfacd008c586ad928 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期一, 05 八月 2019 10:32:51 +0800 Subject: [PATCH] fix thread quit --- csrc/buz/recorder.cpp | 35 +++++++++++++++++++++++------------ 1 files changed, 23 insertions(+), 12 deletions(-) diff --git a/csrc/buz/recorder.cpp b/csrc/buz/recorder.cpp index 2cb3b12..3615729 100644 --- a/csrc/buz/recorder.cpp +++ b/csrc/buz/recorder.cpp @@ -31,22 +31,32 @@ ,file_frame_index_(-1) ,file_path_("") ,func_rec_info_(nullptr) + ,thrd_(nullptr) { // logIt("RECODER ID: %s", id_.c_str()); } Recorder::~Recorder(){ - if (out_ && !stop_recorder_.load()){ - stop_recorder_.store(true); - cv_.notify_one(); - while(stop_recorder_.load()){ - logIt("REC WAIT TO QUIT ID %s", id_.c_str()); - sleep(1); - } - }else if (stop_recorder_.load()){ - logIt("REC NORMAL QUIT"); - } + // if (out_){ + // stop_recorder_.store(true); + // cv_.notify_one(); + // int try_cnt = 0; + // while(stop_recorder_.load()){ + // logIt("REC WAIT TO QUIT ID %s", id_.c_str()); + // if (try_cnt > 100){ + // logIt("REC TRY %d TIMES TO QUIT..., BREAK!!!", try_cnt); + // break; + // } + // try_cnt++; + // sleep(1); + // } + // }else if (stop_recorder_.load()){ + // logIt("REC NORMAL QUIT"); + // } + stop_recorder_.store(true); + thrd_->join(); + logIt("REC THREAD JOINED, QUIT!!!"); } int Recorder::init_writer(){ @@ -190,9 +200,10 @@ logIt("minduration %d maxduration %d curduration %d", minduration, maxduration, end_frame); - std::thread([&]{ + thrd_.reset(new std::thread([&]{ run_thread(); - }).detach(); + })); + //.detach(); return 0; } -- Gitblit v1.8.0