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)
    }
  • 相关阅读:
    微软职位内部推荐-Senior Development Lead
    微软职位内部推荐-Senior Program Manager
    微软职位内部推荐-Senior PM
    微软职位内部推荐-Principal Software Eng Mgr
    微软职位内部推荐-Senior Software Engineer
    mysql性能优化-慢查询分析、优化索引和配置
    MySQL慢日志查询
    spark运行模式
    scala+hadoop+spark环境搭建
    MySQL Sleep进程
  • 原文地址:https://www.cnblogs.com/itdef/p/4542291.html
Copyright © 2011-2022 走看看