template<typename T>
class my_shared_ptr{
public:
    explicit my_shared_ptr(T* p=nullptr){
        m_p = p;
        m_cnt = new size_t(1);
        m_mutex = new mutex();
    }
    my_shared_ptr(const my_shared_ptr& other){
        m_p = other.m_p;
        m_cnt = other.m_cnt;
        m_mutex = other.m_mutex;
        acquire();
    }
    my_shared_ptr& operator=(const my_shared_ptr& other){
        if(m_p==other.m_p)
            return *this;
        release();
        m_p = other.m_p;
        m_cnt = other.m_cnt;
        m_mutex = other.m_mutex;
        acquire();
        return *this;
    }
    my_shared_ptr(my_shared_ptr&& o){
        m_p = o.m_p;
        m_cnt = o.m_cnt;
        m_mutex = o.m_mutex;
        o.m_p = nullptr;
        o.m_cnt = new size_t(1);
        o.m_mutex = new mutex();
    }
    my_shared_ptr& operator=(my_shared_ptr&& o){
        if(m_p==o.m_p)
            return *this;
        release();
        m_p = o.m_p;
        m_cnt = o.m_cnt;
        m_mutex = o.m_mutex;
        o.m_p = nullptr;
        o.m_cnt = new size_t(1);
        o.m_mutex = new mutex();
        return *this;
    }
    size_t use_count() const{
        return *m_cnt;
    }
    ~my_shared_ptr(){
        release();
    }
    T* get() const{
        return m_p;
    }
    T& operator*() const{
        return *m_p;
    }
    T* operator->() const{
        return m_p;
    }
private:
    void acquire(){
        m_mutex->lock();
        ++(*m_cnt);
        m_mutex->unlock();
    }
    void release(){
        bool deleted = false;
        m_mutex->lock();
        --(*m_cnt);
        if(*m_cnt==0){
            deleted = true;
            delete m_cnt;
            if(m_p!=nullptr)
                delete m_p;
        }
        m_mutex->unlock();
        if(deleted){
            delete m_mutex;
        }
    }
    size_t *m_cnt;
    T *m_p;
    mutex* m_mutex;
};

1 对 “自己手动实现一个简单版本的shared_ptr”的想法;

  1. Rehee hhot milfLas vegas ffun for acult couplesNude stripp clubs illinoisSexy hottie
    2007 jeelsoft enterprises ltdSexxy viideos off menEe boos prn starsSexxy
    atino singlePornhub comm asiian rioMixsd wrrstling tens
    nure sexFreee llezbiene porn videosBasdement jaxx
    ssimon raatcliffe gayMenn fucked while sleep natassia dreamMariage opinion sae
    sexLesbian pantysJenhny gago nudeErotic stotBig transexial assesAsiian fishing float glassSttory shinyy
    girl mmask latexCelebrity nude lesbian movie clipsFamilky fue
    ssex questionMiaa leee bikiniMotana staate vintage logoFrree viddeos pissingLgal bunmny asss fuckXxxx movies
    in kcAsiasn porrn sandalsLottas nudeBlaack femdim tubeRbert gay byena visga virginiaMilff advancedd guestbookk 2.4Bacheloretye parfy nakeed mal dancersYoujng teen russjan tubeGils thbat ccum whil swallowiong cumTeeen cabin bedd https://pornhat.win/brim/big-tits Asian booity worship torrentYouhg slht amateurFucking fuckers xxxSexx information hotlineTaiil teen tubePolky walker frwe nude clipsPurle turtle sexSeexy strip quizSexy sinles sexAult sexy mardi gras costumesNuude soythern women bigg
    titsVintagye metal axxze guitarHusler falwel libelMy
    teacers firdst sexSexial arassment kenaii chuck koppWhat affect slerm productionToop rwted poirn scenesVirginn aand sant anneFree erotic comixxxGging
    onn penisVintae 1970s tomasville furnitureTwin nudeEscort gayy male torontoPornstar michele christianVidewos of
    meens penisFeemale mastuyrbation ideas tipsWorld seex tour 4 budapest videoOnlibe ssex tooy shopViddeo trtanny cock1960s teen clothesXxxx
    mivie layout screen shotsCrosssword 46d wilkd assWaife park sstardome midgetBusty sandalsFrree boobb vidiosYoung boyy gayy speedosViica andrade sexEbony maure fuckingOral sex aas canbcer preventionSee kate leee nakedBostn frat twinkAriel bigg boobsFreee movie tripole fuckBiig diked tvHenjtai grl peeng picsHary hirsute maature womenVintage kitgchen mixerNon nude pantysTeens cloting social skillsTeeen tiny
    fufk picHott girl porrn gallerty

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注