wxWidgets/include/wx/private/refcountermt.h
Vadim Zeitlin 0f82a1e043 Use atomic int for reference count in wxWebRequest classes
This is required because these classes are copied in both the main and
the worker threads and using plain int is MT-unsafe.
2021-01-11 01:24:55 +01:00

43 lines
1.2 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: wx/private/refcountermt.h
// Purpose: wxRefCounterMT class: MT-safe version of wxRefCounter
// Author: Vadim Zeitlin
// Created: 2021-01-11
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PRIVATE_REFCOUNTERMT_H_
#define _WX_PRIVATE_REFCOUNTERMT_H_
#include "wx/atomic.h"
// ----------------------------------------------------------------------------
// Version of wxRefCounter with MT-safe count
// ----------------------------------------------------------------------------
class wxRefCounterMT
{
public:
wxRefCounterMT() { m_count = 1; }
void IncRef() { wxAtomicInc(m_count); }
void DecRef()
{
if ( wxAtomicDec(m_count) == 0 )
delete this;
}
protected:
virtual ~wxRefCounterMT() { }
private:
// Ref count is atomic to allow IncRef() and DecRef() to be concurrently
// called from different threads.
wxAtomicInt m_count;
wxDECLARE_NO_COPY_CLASS(wxRefCounterMT);
};
#endif // _WX_PRIVATE_REFCOUNTERMT_H_