zoukankan      html  css  js  c++  java
  • 几个简单的基础类

    最近没时间捣鼓啥,也没什么内容可写。

    先把自己捣鼓的几个基础类放上来,已做记录

    namespace DEF{
    
        class Noncopyable
        {
        protected:
            Noncopyable() {}
            ~Noncopyable() {}
        private:
            Noncopyable(const Noncopyable&);
            const Noncopyable& operator=(const Noncopyable&);
        };
    
    
    } //namespace DEF

    noncopyable

    使用其他的类 继承此类可避免不想看到的拷贝操作。

    namespace DEF{
    
        class CCriticalSection :public Noncopyable
        {
        public:
            CCriticalSection(){ InitializeCriticalSection(&cs_); }
            ~CCriticalSection(){ DeleteCriticalSection(&cs_); }
            void Lock(){ EnterCriticalSection(&cs_); }
            void Unlock(){ LeaveCriticalSection(&cs_); }
        private:
            CRITICAL_SECTION    cs_;
        };
    
        class CCSLock :public Noncopyable
        {
        public:
            explicit CCSLock(CCriticalSection& cs) :cs_(cs){
                cs_.Lock();
            }
            ~CCSLock(){
                cs_.Unlock();
            }
        private:
            CCriticalSection& cs_;
        };
    
    }//namespace DEF

    一个windows 多线程锁的类

    使用方法如下:

    class CTest :public DEF::Noncopyable{
    public:
        void test();
    
    private:
        DEF::CCriticalSection cs_;
    }
    
    
    void CTest::test()
    {
        DEF::CCSLock lock(cs_);
        // do something
        // 退出前 自动析构 退出临界区(CriticalSection)
    }
  • 相关阅读:
    VLC 播放完毕后自动退出的问题
    配置Linux文件句柄数
    java获取某一天的邮件
    oracle wm_concat函数将多行转字段函数
    Vue学习(二十五)TS支持
    Vue学习(二十四)render函数
    Vue学习(二十三)路由全攻略
    git commit规范&工具安装使用
    Vue学习(二十二)自定义指令全攻略
    Vue学习(二十一)$emit全攻略
  • 原文地址:https://www.cnblogs.com/itdef/p/4542291.html
Copyright © 2011-2022 走看看