亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cgrowablethreadpool.h

?? window下的多線程編程參考書。值得一讀
?? H
字號(hào):
//
// FILE: CGrowableThreadPool.h
//
// Copyright (c) 1997 by Aaron Michael Cohen and Mike Woodring
//
/////////////////////////////////////////////////////////////////////////

#ifndef __CGrowableThreadPool_H__
#define __CGrowableThreadPool_H__

#include <CMclGlobal.h>
#include <CMclAutoLock.h>
#include <CMclLinkedLists.h>
#include <CMclThread.h>
#include <CMclCritSec.h>
#include <CMclSemaphore.h>
#include <CMclEvent.h>
#include <CMclWaitableCollection.h>
#include <CMclAutoPtr.h>
#include "CThreadPool.h"

// CLinkedListRemovable
//
// This class provides a Remove() operation in addition to the
// regulare operations provided by CMclLinkedList.  To use
// this class, objects of type T must provide an equality (==)
// operator.
//
template <class T>
class CLinkedListRemovable : public CMclLinkedList<T>
{
    public:
        BOOL Remove( T & rData )
        {
            BOOL fFoundAndRemoved = FALSE;

            CMclAutoLock        Lock(m_cCritSec);
            CMclLinkedListNode *pTargetNode = 0;
            CMclLinkedListNode *pNode = m_MasterNode.m_pNext;
            T                   NodeData;
        
            // Search for a node with matchin data.
            //
            while( !fFoundAndRemoved && (pNode != &m_MasterNode) )
            {
                pNode->GetData(NodeData);

                if( NodeData == rData )
                {
                    // Found it!  Make a note and terminate the
                    // search.
                    //
                    fFoundAndRemoved = TRUE;
                    pTargetNode = pNode;
                }
                else
                {
                    pNode = pNode->m_pNext;
                }
            }

            if( fFoundAndRemoved )
            {
                // Link the node before the target node to the node
                // following the target node.
                //
                pTargetNode->m_pPrev->m_pNext = pTargetNode->m_pNext;
                pTargetNode->m_pNext->m_pPrev = pTargetNode->m_pPrev;

                // Toss the removed node back on the free list of nodes.
                //
                AddToFreeList(pTargetNode);

                // If the list is empty now, reset the NotEmpty event.
                //
                if( m_MasterNode.m_pNext == &m_MasterNode )
                {
                    m_cNotEmpty.Reset();
                }
            }

            return(fFoundAndRemoved);
        }
};

class CGrowableThreadPool : public CThreadPool, private CMclThreadHandler
{
    public:
        CGrowableThreadPool( long lMinThreads, long lMaxThreads, DWORD dwThreadLifetime );
        virtual ~CGrowableThreadPool();

        // CThreadPool implementation.
        //
        virtual BOOL DispatchThread( CMclThreadHandler *pHandler );

    private:
        // CMclThreadHandler implementation.
        //
        virtual unsigned ThreadHandlerProc( void );

    private:
        // CDispatchRecords are enqueued to signal a pending
        // DispatchThread operation that needs to be serviced.
        //
        class CDispatchRecord
        {
            public:
                CDispatchRecord();
                CDispatchRecord( CMclThreadHandler *pThreadHandler );

                unsigned Execute( void );
                int operator == ( const CDispatchRecord& rhs );

            private:
                CMclThreadHandler  *m_pUserThreadHandler;
        };

        // Because threads in this pool all execute the same
        // thread handler in the CGrowableThreadPool class, and
        // because threads may terminate themselves if they
        // sit idle too long in the pool, the thread handler proce
        // needs a way to recover the pointer to the CMclThread
        // object that embodies the thread that is executing.
        // To do this, we maintain a map between thread ids and
        // CMclThread * pointers.
        //
        class CThreadIdToPtrMap
        {
            public:
                CThreadIdToPtrMap( long lMaxThreads );
                ~CThreadIdToPtrMap();

                void        AddThread( DWORD dwThreadId, CMclThread *pThread );
                CMclThread *GetThreadFromId( DWORD dwThreadId );
                void        FreeSlot( DWORD dwThreadId );
                void        FreeSlot( CMclThread *pThread );

            private:
                struct THREADINFO
                {
                    BOOL        fSlotUsed;
                    DWORD       dwThreadId;
                    CMclThread *pThread;
                };

                THREADINFO *m_pThreadIdMap;
                long        m_lMaxThreads;
        };

    private:
        // Thread pool synchronization and management.
        //
        CMclCritSec                         m_csPool;
        CMclEvent                           m_ExitEvent;
        DWORD                               m_dwThreadLifetime;
        CThreadIdToPtrMap                   m_ThreadIdMap;

        // Dispatch queue and thread pool.
        //
        CMclQueue<CDispatchRecord>          m_DispatchQ;
        CMclSemaphore                       m_JobsPending;
        
        long                                m_lMinThreads;  // Numbers of alive threads; not
        long                                m_lMaxThreads;  // counting who's busy and who's
        long                                m_lCurThreads;  // not busy.

        // List of threads in the pool and a semaphore that
        // indicates how many are actually free (idle).
        //
        CLinkedListRemovable<CMclThread *>  m_ThreadsInPool;
        CMclSemaphore                       m_ThreadsFree;
};

#endif // __CGrowableThreadPool_H__

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产免费视频| 激情欧美一区二区三区在线观看| 北条麻妃国产九九精品视频| 国产亚洲一二三区| 粉嫩av一区二区三区在线播放| 国产日韩欧美精品一区| 成人av电影在线观看| 亚洲综合色在线| 欧美一区二区三区色| 日本麻豆一区二区三区视频| 久久午夜羞羞影院免费观看| 国产精品影视在线| 一区二区三区四区不卡在线 | 亚洲一区二区三区四区五区黄| 色婷婷av一区二区三区gif| 亚洲va韩国va欧美va精品| 日韩欧美在线一区二区三区| 国产91丝袜在线播放0| 亚洲视频一二区| 日韩视频国产视频| 不卡一区中文字幕| 日日骚欧美日韩| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久综合丝袜日本网| 91在线国产福利| 日韩中文字幕一区二区三区| 中文字幕的久久| 精品视频一区二区三区免费| 久久不见久久见免费视频7| 国产精品久久久久四虎| 欧美一区二区性放荡片| 不卡视频免费播放| 开心九九激情九九欧美日韩精美视频电影| 国产欧美日韩不卡免费| 欧美人体做爰大胆视频| 国产mv日韩mv欧美| 三级不卡在线观看| 亚洲日本在线天堂| 欧美mv日韩mv国产| 99re热视频精品| 极品少妇xxxx精品少妇偷拍| 一区二区三区免费在线观看| 久久蜜桃av一区二区天堂 | 中文字幕中文字幕在线一区| 91麻豆精品国产| 色婷婷av一区二区| 国产成人av资源| 日本在线不卡一区| 一区二区欧美精品| 国产精品福利一区| 久久精品无码一区二区三区| 51精品国自产在线| 日本伦理一区二区| 成人国产精品免费| 国产ts人妖一区二区| 精品影院一区二区久久久| 亚洲午夜一区二区三区| 亚洲婷婷在线视频| 日本一区二区不卡视频| 国产午夜亚洲精品午夜鲁丝片| 91精品国产色综合久久ai换脸 | 国产一区二区三区在线观看免费| 无码av中文一区二区三区桃花岛| 亚洲免费在线电影| 亚洲视频在线一区二区| 国产精品久久免费看| 久久久国际精品| 精品成人一区二区三区四区| 欧美一区二区三区视频免费| 91精品国产麻豆| 欧美一区二区三区小说| 91精品中文字幕一区二区三区| 欧美日韩中文字幕一区| 在线观看亚洲精品| 欧美日韩精品一区二区三区四区| 91久久精品一区二区| 色综合天天视频在线观看 | 粉嫩高潮美女一区二区三区| 丁香六月综合激情| 成人av网站大全| 91性感美女视频| 91久久精品一区二区二区| 欧洲亚洲国产日韩| 欧美日韩精品欧美日韩精品| 精品视频免费看| 欧美一区二区三区四区五区| 精品理论电影在线| 久久久久久久久久久电影| 中文字幕欧美区| 亚洲欧美电影院| 亚洲综合一区二区三区| 午夜精品福利一区二区三区av| 日韩精品一二三四| 久久66热re国产| 成人精品国产一区二区4080| 色婷婷精品大在线视频| 欧美乱妇15p| 欧美白人最猛性xxxxx69交| 国产亚洲短视频| 洋洋成人永久网站入口| 日韩制服丝袜先锋影音| 国产一区福利在线| 99国产精品国产精品毛片| 欧美日韩电影一区| 久久精品一区八戒影视| 亚洲激情五月婷婷| 久久国产精品区| 99久久久精品| 日韩一区和二区| 国产精品免费网站在线观看| 亚洲成人一区在线| 国产一区二区电影| 在线观看欧美精品| 精品剧情v国产在线观看在线| 国产精品国产自产拍高清av王其| 亚洲成人激情社区| 国产宾馆实践打屁股91| 欧美高清视频www夜色资源网| 国产偷v国产偷v亚洲高清 | 久久国产成人午夜av影院| 不卡视频在线观看| 欧美一级久久久| 亚洲美女屁股眼交3| 精品制服美女丁香| 欧美亚洲精品一区| 日本一区二区免费在线| 秋霞午夜鲁丝一区二区老狼| av亚洲精华国产精华精华| 日韩欧美在线网站| 亚洲一区在线观看视频| 丁香婷婷综合激情五月色| 555夜色666亚洲国产免| 亚洲精品久久久久久国产精华液| 国内成人免费视频| 欧美美女一区二区三区| 亚洲视频你懂的| 久久99精品久久久久婷婷| 欧美性猛交xxxx乱大交退制版| 国产精品亲子乱子伦xxxx裸| 看电视剧不卡顿的网站| 欧美精品欧美精品系列| 亚洲欧美一区二区三区极速播放| 国产一区二区在线观看免费| 91精品综合久久久久久| 亚洲成人午夜影院| 色综合久久88色综合天天| 国产精品无遮挡| 国产精品一区免费在线观看| 91麻豆精品国产| 午夜激情综合网| 欧洲精品中文字幕| 亚洲综合久久久久| 91久久人澡人人添人人爽欧美| 18欧美乱大交hd1984| 国产麻豆精品在线观看| 欧美成人一区二区三区| 日日夜夜一区二区| 欧美一区三区四区| 日韩精品每日更新| 欧美福利一区二区| 污片在线观看一区二区| 欧美二区三区91| 秋霞av亚洲一区二区三| 欧美一区二区福利视频| 日韩电影免费一区| 91精品国产aⅴ一区二区| 日韩av不卡一区二区| 在线电影院国产精品| 免费成人在线播放| 欧美白人最猛性xxxxx69交| 九九视频精品免费| 26uuu精品一区二区三区四区在线| 久热成人在线视频| 精品福利在线导航| 国产成人综合自拍| 中文字幕在线观看一区| 91在线观看下载| 亚洲一区二区欧美| 日韩一区二区电影在线| 精品中文av资源站在线观看| 国产亚洲欧美激情| 99久久精品情趣| 香蕉影视欧美成人| 精品嫩草影院久久| 成人av在线播放网址| 一区二区三区四区av| 91精品一区二区三区在线观看| 国内精品国产成人国产三级粉色 | 国产成人啪午夜精品网站男同| 欧美国产一区视频在线观看| 色综合久久中文综合久久97 | 麻豆精品新av中文字幕| 国产亚洲精品超碰| 在线观看日韩毛片| 麻豆久久一区二区| 18成人在线观看| 日韩欧美一区二区免费| av影院午夜一区| 日韩电影免费在线看| 国产精品视频观看|