Mercurial > octave
changeset 24253:cf15cb87bad9
use shared_ptr to manage thread_manager object
* thread_manager.h (octave_base_thread_manager::count): Delete data
member and all uses.
(class octave_base_thread_manager, class octave_thread_manager):
Use default constructor and destructor methods where possible.
(octave_thread_manager::m_rep): Manage with shared_ptr.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 15 Nov 2017 14:38:31 -0500 |
parents | f8c263f961c1 |
children | 4bca68f0d8d5 |
files | libgui/src/thread-manager.h |
diffstat | 1 files changed, 7 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/thread-manager.h Wed Nov 15 14:21:52 2017 -0500 +++ b/libgui/src/thread-manager.h Wed Nov 15 14:38:31 2017 -0500 @@ -25,7 +25,7 @@ #include "octave-config.h" -#include "oct-refcount.h" +#include <memory> class octave_base_thread_manager { @@ -33,21 +33,15 @@ friend class octave_thread_manager; - octave_base_thread_manager (void) : m_count (1) { } + octave_base_thread_manager (void) = default; - octave_base_thread_manager (const octave_base_thread_manager&) - : m_count (1) - { } + octave_base_thread_manager (const octave_base_thread_manager&) = default; virtual ~octave_base_thread_manager (void) = default; virtual void register_current_thread (void) = 0; virtual void interrupt (void) = 0; - -protected: - - octave::refcount<int> m_count; }; class octave_thread_manager @@ -56,27 +50,11 @@ octave_thread_manager (void); - ~octave_thread_manager (void) - { - if (--m_rep->m_count == 0) - delete m_rep; - } - - octave_thread_manager (const octave_thread_manager& tm) : m_rep (tm.m_rep) { } + ~octave_thread_manager (void) = default; - octave_thread_manager& operator = (const octave_thread_manager& tm) - { - if (m_rep != tm.m_rep) - { - if (--m_rep->m_count == 0) - delete m_rep; + octave_thread_manager (const octave_thread_manager& tm) = default; - m_rep = tm.m_rep; - m_rep->m_count++; - } - - return *this; - } + octave_thread_manager& operator = (const octave_thread_manager& tm) = default; void register_current_thread (void) { m_rep->register_current_thread (); } @@ -88,7 +66,7 @@ private: - octave_base_thread_manager *m_rep; + std::shared_ptr<octave_base_thread_manager> m_rep; static octave_base_thread_manager * create_rep (void); };