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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dpq2.cpp

?? window下的多線程編程參考書。值得一讀
?? CPP
字號:
#include <stdio.h>
#include <string.h>
#include "CMcl.h"

class CJob {
    // this class has only pure virtual functions
    // and must be derived from to use with the
    // CJobList object...
public:
    // execute method will be called by the
    // deferred processing queue to process
    // this job...
    virtual void Execute(void) = 0;

    // cancel method will be called by the
    // deferred processing queue to process
    // this job...
    virtual void Cancel(void) = 0;
};

class CJobList : private CMclLinkedList<CJob *> {
public:
    BOOL QueueJob( CJob *pJob) {
        return PutOnTailOfList(pJob);
    };

    BOOL DequeueJob( CJob **pJob, CMclEvent *pInterrupt = NULL, DWORD dwTimeout = INFINITE) {
        return GetFromHeadOfList( *pJob, dwTimeout, pInterrupt);
    };

    BOOL RemoveJob( CJob *pJob) {
        // acquire the critical section lock...
        CMclAutoLock autoLock(m_cCritSec);

        // search the list for a matching job...
        CMclLinkedListNode *pNode = m_MasterNode.m_pNext;
        while (pNode != &m_MasterNode) {
            // since pNode is not the master node, we know that
            // it points to a data node, so this cast is safe...
            if ((static_cast<CMclLinkedListDataNode *>(pNode))->m_data == pJob)
                break;
        }

        // if we found a match, remove it...
        if (pNode != &m_MasterNode) {
            // remove the node...
            pNode->m_pPrev->m_pNext = pNode->m_pNext;
            pNode->m_pNext->m_pPrev = pNode->m_pPrev;

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

            // return TRUE when we remove a node...
            return TRUE;
        }
        else {
            // return FALSE when there is no matching
            // node to remove...
            return FALSE;
        }
    };
};

class CDPQueue2 : public CMclThreadHandler {
private:
    CJobList m_cJobList; // list of pending jobs
    CMclThreadAutoPtr m_apWorkerThread; // auto-pointer to worker thread
    CMclEvent m_ceControl; // auto-reset event to control thread
    BOOLEAN m_bThreadExists; // flag is TRUE when worker thread exits
    BOOLEAN m_bJobPosted; // flag is TRUE between a job being queued and processed
    CMclCritSec m_CritSec; // synchronize access to m_bThreadExists and m_bJobPosted
    DWORD m_dwTimeout; // timeout value passed in the constructor

private:
    unsigned ThreadHandlerProc(void) {
        CJob *pJob;
        while (TRUE) {
            if (m_cJobList.DequeueJob( &pJob, &m_ceControl, m_dwTimeout)) {
                pJob->Execute();

                CMclAutoLock lock(m_CritSec);
                m_bJobPosted = FALSE;
            }
            else {
                CMclAutoLock lock(m_CritSec);
                if (!m_bJobPosted) {
                    m_bThreadExists = FALSE;
                    break;
                }
            }
        }

        printf("DPQ2 thread exiting.\n");

        return 0;
    };

public:
    CDPQueue2( DWORD dwTimeout = 1000) {
        m_bThreadExists = FALSE;
        m_bJobPosted = FALSE;
        m_dwTimeout = dwTimeout;
        return;
    };

    ~CDPQueue2() {
        m_ceControl.Set();
        m_apWorkerThread->Wait(INFINITE);
    }

    BOOL QueueJob( CJob *pJob) {
        BOOL bStatus = m_cJobList.QueueJob(pJob);
        // limit scope to hold auto-lock
        {        
            CMclAutoLock lock(m_CritSec);
            m_bJobPosted = TRUE;
            if (!m_bThreadExists) {
                // we need to create a worker thread...
                m_bThreadExists = TRUE;
                m_apWorkerThread = new CMclThread(this);

                printf("DPQ2 thread created.\n");
            }
        }

        return bStatus;
    };

    BOOL CancelJob( CJob *pJob) {
        if (m_cJobList.RemoveJob(pJob) == TRUE) {
            pJob->Cancel();
            return TRUE;
        }
        else {
            return FALSE;
        }
    };

    void CancelAllJobs(void) {
        CJob *pJob;
        while (m_cJobList.DequeueJob( &pJob, NULL, 0)) {
            pJob->Cancel();
        }
    };
};

class CPrintJob : public CJob {
private:
    TCHAR *m_lpString;
    BOOL m_bInUse;

public:
    // constructor...
    CPrintJob(LPCTSTR lpString) {
        // initialize the print job...
        m_lpString = NULL;
        if (lpString) {
            m_lpString = new TCHAR[strlen(lpString) + 1];
            strcpy( m_lpString, lpString);
        }
    };

    // pure virtual destructor...
    virtual ~CPrintJob() {
        if (m_lpString) {
            delete [] m_lpString;
        }
    };

    void Execute(void) {
        // execute the print job...
        if (m_lpString) {
            printf( "Executing job <%s>.\n", m_lpString);
        }

        // make the job take a small amount of time...
        Sleep(50);

        // jobs delete themselves when complete...
        delete this;
    };

    void Cancel(void) {
        // cancel the print job...
        if (m_lpString) {
            printf( "Canceling job <%s>.\n", m_lpString);
        }

        // jobs delete themselves when canceled...
        delete this;
    };
};

int main( int argc, char *argv[]) {
    CDPQueue2 dpq(10);
    CPrintJob *pPrintJob;
    TCHAR string[32];

    // this DPQ starts automatically...

    // post 100 jobs at irregular intervals 
    // between 1 and 100 milliseconds...
    for (int index = 0; index < 100; index++) {    
        Sleep((rand() % 99) + 1);

        sprintf( string, "This is job %d", index);
        pPrintJob = new CPrintJob(string);
        dpq.QueueJob(pPrintJob);
    }

    // this DPQ stops automatically...

    // cancel any jobs remaining...
    dpq.CancelAllJobs();

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区国色天香| 久久久久99精品一区| 国产精品主播直播| 日本一区二区三区久久久久久久久不| 成人动漫一区二区三区| 国产精品视频免费| 国产精品一区久久久久| 国产乱码精品1区2区3区| 一区二区三区精品在线观看| 久久精品男人天堂av| 欧美日韩一本到| 成人午夜碰碰视频| 国产制服丝袜一区| 亚洲国产精品久久艾草纯爱| 国产精品国产三级国产普通话蜜臀 | 国产一区二区电影| 亚洲一本大道在线| 九九久久精品视频| 国产欧美日韩三级| 制服丝袜激情欧洲亚洲| 色婷婷久久久亚洲一区二区三区| 国产精品一二三四区| 丝袜脚交一区二区| 亚洲一区二区三区免费视频| 国产精品久久99| 久久久久国产免费免费| 亚洲精品一区二区三区精华液| 欧美精品欧美精品系列| 欧美日韩日日骚| 在线免费观看视频一区| 一本色道久久综合亚洲aⅴ蜜桃| 国产伦精品一区二区三区视频青涩| 婷婷激情综合网| 亚洲一区二区欧美日韩| 夜夜亚洲天天久久| 亚洲久草在线视频| 亚洲老司机在线| 亚洲一区免费在线观看| 一区二区三区 在线观看视频| 亚洲欧美综合色| 自拍偷拍国产精品| 亚洲免费成人av| 亚洲已满18点击进入久久| 亚洲人成7777| 亚洲综合丁香婷婷六月香| 亚洲一区二区三区国产| 首页亚洲欧美制服丝腿| 久久狠狠亚洲综合| 国产资源精品在线观看| 成人的网站免费观看| 99精品国产一区二区三区不卡| 99精品桃花视频在线观看| 色婷婷综合五月| 欧美日韩免费高清一区色橹橹| 欧美日韩另类国产亚洲欧美一级| 3751色影院一区二区三区| 日韩欧美国产高清| 2017欧美狠狠色| 中文字幕一区二区三区色视频| 亚洲精品免费播放| 日韩和欧美的一区| 国产在线观看一区二区| 99国产精品久久久| 欧美性高清videossexo| 日韩三级视频中文字幕| 国产欧美中文在线| 亚洲一区二区精品久久av| 蜜桃91丨九色丨蝌蚪91桃色| 国产综合色在线视频区| 91一区二区三区在线播放| 欧美日韩视频专区在线播放| 欧美白人最猛性xxxxx69交| 中文字幕欧美国产| 欧美日韩综合一区| 欧美成人激情免费网| 一个色综合网站| 精品国产91洋老外米糕| 国产精品网站导航| 亚洲图片欧美色图| 久久97超碰色| 一本久久精品一区二区| 日韩一区二区三区四区| 中文字幕第一区第二区| 亚洲.国产.中文慕字在线| 国产91综合网| 91麻豆精品国产自产在线观看一区 | 欧美日韩午夜在线| 精品sm捆绑视频| 亚洲欧美电影院| 精品一区二区三区视频| 色老汉一区二区三区| 久久久另类综合| 午夜a成v人精品| www.色精品| 精品久久99ma| 亚洲成av人在线观看| 成人综合婷婷国产精品久久 | 国产一区不卡在线| 欧美这里有精品| 国产精品日韩精品欧美在线| 日本特黄久久久高潮| 色综合久久久网| 欧美激情一区二区三区蜜桃视频 | 日韩欧美视频一区| 亚洲国产欧美日韩另类综合 | 国产在线精品免费| 欧美精选午夜久久久乱码6080| 国产精品久线观看视频| 国内欧美视频一区二区| 日韩一区二区三区精品视频| 亚洲自拍与偷拍| 91丨九色丨尤物| 日本一区二区综合亚洲| 蜜桃视频一区二区| 欧美日韩mp4| 亚洲国产中文字幕在线视频综合 | 97精品久久久久中文字幕| 久久在线免费观看| 久久激五月天综合精品| 91精品国产高清一区二区三区| 亚洲综合偷拍欧美一区色| 99精品国产热久久91蜜凸| 日本一区二区三区在线不卡| 国产久卡久卡久卡久卡视频精品| 日韩区在线观看| 欧美a级一区二区| 在线播放亚洲一区| 爽好久久久欧美精品| 一级精品视频在线观看宜春院| 欧美精品乱码久久久久久| 一个色在线综合| 欧美国产精品一区| 欧美一区二区福利视频| 日韩一区二区三区四区五区六区| 7777精品伊人久久久大香线蕉超级流畅 | 国产欧美日韩综合| 国产盗摄视频一区二区三区| 欧美大胆一级视频| 免费高清视频精品| 精品久久久久av影院| 91精品国产色综合久久久蜜香臀| 亚洲午夜视频在线| 欧美性大战xxxxx久久久| 亚洲成人自拍网| 有码一区二区三区| 欧美mv日韩mv亚洲| 欧美日韩精品电影| 国内精品伊人久久久久影院对白| 日韩av电影免费观看高清完整版| 国产在线视频不卡二| 久久人人爽人人爽| 国产成人av资源| 亚洲桃色在线一区| 欧美影院一区二区| 全国精品久久少妇| 久久久久国产精品免费免费搜索| 成人永久看片免费视频天堂| 国产精品美日韩| 欧美最猛性xxxxx直播| 五月婷婷综合网| 久久影院午夜片一区| av电影在线观看一区| 亚洲香蕉伊在人在线观| 精品区一区二区| 不卡的av电影在线观看| 艳妇臀荡乳欲伦亚洲一区| 91精品一区二区三区在线观看| 久久精品国产99国产| 国产精品人人做人人爽人人添| 99国产精品国产精品久久| 五月天视频一区| 久久久99精品久久| 在线观看国产一区二区| 精品在线免费观看| 亚洲日本在线视频观看| 日韩一区二区免费在线电影| 国产大陆精品国产| 亚洲国产欧美日韩另类综合| 在线播放中文一区| 欧美国产乱子伦| 国内成+人亚洲+欧美+综合在线 | 91精品国产欧美一区二区| 东方欧美亚洲色图在线| 亚洲国产精品久久艾草纯爱 | 欧美精品一区二区三区一线天视频| 成人高清视频在线| 日本va欧美va欧美va精品| 1000部国产精品成人观看| 欧美一区二区日韩一区二区| 成年人国产精品| 另类小说一区二区三区| 亚洲黄色性网站| 久久久久久**毛片大全| 欧美日韩一级二级| 成人app下载| 蜜桃视频第一区免费观看| 亚洲精品自拍动漫在线| 国产日产欧美一区二区视频| 在线91免费看| 在线国产电影不卡|