zoukankan      html  css  js  c++  java
  • ATL 引用计数线程模型

    只为记录

    1. CComSingleThreadModel Provides methods for incrementing and decrementing a variable. Does not provide a critical section.
    2. CComMultiThreadModel Provides thread-safe methods for incrementing and decrementing a variable. Provides a critical section.
    3. CComMultiThreadModelNoCS Provides thread-safe methods for incrementing and decrementing a variable. Does not provide a critical sectio
    4. CComObjectThreadModel Determines the appropriate threading-model class for a single object class.
    5. CComGlobalsThreadModel Determines the appropriate threading-model class for an object that is globally available.

    image

    class CComMultiThreadModelNoCS
    {
    public:
        static ULONG WINAPI Increment(_Inout_ LPLONG p) throw()
        {
            return InterlockedIncrement(p);
        }
        static ULONG WINAPI Decrement(_Inout_ LPLONG p) throw()
        {
            return InterlockedDecrement(p);
        }
        typedef CComFakeCriticalSection AutoCriticalSection;
        typedef CComFakeCriticalSection AutoDeleteCriticalSection;
        typedef CComFakeCriticalSection CriticalSection;
        typedef CComMultiThreadModelNoCS ThreadModelNoCS;
    };
    
    class CComMultiThreadModel
    {
    public:
        static ULONG WINAPI Increment(_Inout_ LPLONG p) throw()
        {
            return InterlockedIncrement(p);
        }
        static ULONG WINAPI Decrement(_Inout_ LPLONG p) throw()
        {
            return InterlockedDecrement(p);
        }
        typedef CComAutoCriticalSection AutoCriticalSection;
        typedef CComAutoDeleteCriticalSection AutoDeleteCriticalSection;
        typedef CComCriticalSection CriticalSection;
        typedef CComMultiThreadModelNoCS ThreadModelNoCS;
    };
    
    class CComSingleThreadModel
    {
    public:
        static ULONG WINAPI Increment(_Inout_ LPLONG p) throw()
        {
            return ++(*p);
        }
        static ULONG WINAPI Decrement(_Inout_ LPLONG p) throw()
        {
            return --(*p);
        }
        typedef CComFakeCriticalSection AutoCriticalSection;
        typedef CComFakeCriticalSection AutoDeleteCriticalSection;
        typedef CComFakeCriticalSection CriticalSection;
        typedef CComSingleThreadModel ThreadModelNoCS;
    };
    
  • 相关阅读:
    h5 canvas
    css3选择器
    弹性盒模型
    css新增属性
    蒙版 倒影 渐变
    字符串转化为json的三种方法
    Final互评------《弹球学成语》---- 杨老师粉丝群
    Final互评------《飞词》---- 拉格朗日2018
    作业 20181204-4 互评Final版本
    换手
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2674784.html
Copyright © 2011-2022 走看看