From c9bbfff992df8fa5ceafeb7d802afc58648d4981 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Thu, 15 Jun 2017 19:09:29 +0200 Subject: [PATCH] implement destructor --- project/rfid/rfid_reader.cpp | 8 ++++---- project/rfid/rfid_reader.hpp | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/project/rfid/rfid_reader.cpp b/project/rfid/rfid_reader.cpp index f724208..0cdbfb6 100644 --- a/project/rfid/rfid_reader.cpp +++ b/project/rfid/rfid_reader.cpp @@ -10,10 +10,10 @@ rfid_reader::rfid_reader() thread = std::thread(&rfid_reader::loop, this); } -~rfid_reader::rfid_reader() +rfid_reader::~rfid_reader() { - - thread.join(); + stop_thread = true; + if(thread.joinable()) thread.join(); } uint32_t rfid_reader::last_id() const @@ -23,7 +23,7 @@ uint32_t rfid_reader::last_id() const void rfid_reader::loop() { - while(true) + while(!stop_thread) { if(!mfrc.PICC_IsNewCardPresent()) { diff --git a/project/rfid/rfid_reader.hpp b/project/rfid/rfid_reader.hpp index d950345..8d211a7 100644 --- a/project/rfid/rfid_reader.hpp +++ b/project/rfid/rfid_reader.hpp @@ -13,12 +13,13 @@ public: rfid_reader(); rfid_reader(const rfid_reader &) = delete; rfid_reader(const rfid_reader &&) = delete; - ~rfid_reader() = default; + ~rfid_reader(); void loop(); private: MFRC522 mfrc; uint32_t uid; std::thread thread; + bool stop_thread; };