std::this_thread::sleep_for(std::chrono::seconds(1));
mCounter.fetch_add(1);
if (mCounter.load() > MAX_TIMER_COUNTER) {
+ std::unique_lock<std::mutex> lock(mMutex, std::defer_lock);
+
mIsPrinting.store(true);
dlog_print(DLOG_ERROR, LOG_TAG, "Counter : %d, printing recorded logs ===", mCounter.load());
std::cerr << "Counter : " << mCounter.load() << "printing recorded logs ===" << std::endl;
- std::lock_guard<std::mutex> lock(mMutex);
int index = 0;
- for (auto message : mMainMessages) {
+
+ std::list<std::string> mainMessages;
+ std::list<std::string> allMessages;
+
+ lock.lock();
+ std::copy(mMainMessages.begin(), mMainMessages.end(), std::back_inserter(mainMessages));
+ std::copy(mAllMessages.begin(), mAllMessages.end(), std::back_inserter(allMessages));
+ lock.unlock();
+
+ for (auto message : mainMessages) {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
dlog_print(DLOG_ERROR, LOG_TAG, "M[%d], %s", ++index, message.c_str());
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
}
index = 0;
- for (auto message : mAllMessages) {
+ for (auto message : allMessages) {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
dlog_print(DLOG_ERROR, LOG_TAG, "A[%d], %s", ++index, message.c_str());
if (mCounter <= 0) {