• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            kenlistian

            厚積薄發(fā). 勤為槳,思為帆

               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
              73 隨筆 :: 4 文章 :: 22 評(píng)論 :: 0 Trackbacks

            這是一個(gè)簡單的線程池代碼,它創(chuàng)建一個(gè)線程隊(duì)列,通過定義不同的消息,在不同的消息處理中不同的部分,這樣當(dāng)啟動(dòng)不同任務(wù)線程時(shí),可以通過傳入不同參數(shù)來處理不同的處理部分。

            來處理實(shí)際的部分,

            單獨(dú)部分,

            列出主程序代碼

            #include "stdafx.h"
            #include "Pool.h"

            int main(int argc, char* argv[])
            {
                Pool thread;               //定義1個(gè)放置線程的池
                Sleep(1000);
               for (int i=0;i<10;i++)
              {
                  thread.DoWork();          //運(yùn)行池中線程
              }
                 return 0;
            }

            //在建立一個(gè)線程池類,頭文件

            class Pool 
            {
            public:

                //聲明為靜態(tài)函數(shù),方可在線程中建立
             static DWORD WINAPI ThreadProc(void * p);  

             int DoWork();
             Pool();
             virtual ~Pool();

            private:
             static CRITICAL_SECTION sm_cs;
             std::queue<DWORD> m_qidThread;      //采用了stl中的隊(duì)列存放開辟的線程

            };

             

            ///////////////////////pool實(shí)現(xiàn)部分

            #define MYMESSAGE (WM_USER+1000)    //自定義在線程中處理的消息
            #define NUMTHREADS 10                        

            CRITICAL_SECTION Pool::sm_cs;             //聲明一個(gè)臨界區(qū),當(dāng)在線程下操作界

                                                                               //面時(shí),必須考慮到這是不能在線程下跑的

            Pool::Pool()
            {
             ::InitializeCriticalSection(&sm_cs);

             for (int i=0;i<10;i++)               //工作時(shí)立即創(chuàng)建10個(gè)線程,并保存在線程隊(duì)列中
             {
              DWORD dw;
              HANDLE thread = ::CreateThread(NULL, 0, ThreadProc, NULL, 0, &dw);
              ::CloseHandle(thread);
              m_qidThread.push(dw);
             }
            }

            Pool::~Pool()
            {
             while (!m_qidThread.empty())
             {
              ::PostThreadMessage(m_qidThread.front(), WM_QUIT, 0, 0);  //通知線程你要退出了
              m_qidThread.pop();
             }
             ::DeleteCriticalSection(&sm_cs);
            }

            DWORD WINAPI Pool::ThreadProc(void *p)
            {
              MSG msg;
              while (::GetMessage(&msg, NULL, 0, 0)>0)
              {
                switch (msg.message)
                {
                  case MYMESSAGE:
                //////////////////////////////////////
                // 這里加入自己的實(shí)際代碼
                //
            //    ::EnterCriticalSection(&sm_cs);
                std::cout << "Hello World! from Thread Number: " << ::GetCurrentThreadId() <<   std::endl;
            //    ::LeaveCriticalSection(&sm_cs);

                 case MYMESSAGE2:          //可以加更多的自定義消息

                    //   。。。。

                      break;

                  default:      break;
                };
              };
              return 0;
            }

            //DoWork 完全可以帶參數(shù)進(jìn)去調(diào)用不同的消息體部分

            int Pool::DoWork()
            {
             DWORD dw = m_qidThread.front();
              ::PostThreadMessage(dw, MYMESSAGE, 0, 0);  //通知處理自定義消息部分的實(shí)際內(nèi)容了
             m_qidThread.pop();
             m_qidThread.push(dw);
              return 0;
             
            }

            posted on 2006-05-25 20:12 kenlistian 閱讀(794) 評(píng)論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            精品久久久久久中文字幕人妻最新| 久久精品国产精品青草| 国产精品乱码久久久久久软件| 色婷婷久久久SWAG精品| 狼狼综合久久久久综合网| 国产精品熟女福利久久AV| 99久久精品免费看国产一区二区三区| 久久国产免费观看精品3| 亚洲国产综合久久天堂| 狠狠色丁香久久综合五月| 97香蕉久久夜色精品国产| 9999国产精品欧美久久久久久| 久久精品无码一区二区WWW| 久久九九久精品国产| 亚洲伊人久久大香线蕉苏妲己| 亚洲伊人久久精品影院| 伊人久久大香线蕉综合5g| 97久久久精品综合88久久| 亚洲国产精品无码久久一区二区| 日日狠狠久久偷偷色综合0| 久久无码av三级| 97久久精品国产精品青草| 精品无码久久久久久午夜| 亚洲国产精品无码久久久不卡 | 久久精品视频网| 久久久女人与动物群交毛片| 久久精品国产清自在天天线| 香港aa三级久久三级老师2021国产三级精品三级在 | 五月丁香综合激情六月久久| 亚洲七七久久精品中文国产| 久久夜色精品国产| 久久伊人色| 久久久久久久精品妇女99 | 久久线看观看精品香蕉国产| 成人国内精品久久久久影院| 久久久久国产精品| 日韩精品久久久久久| 国产亚州精品女人久久久久久 | 996久久国产精品线观看| 女人香蕉久久**毛片精品| 国产高清美女一级a毛片久久w|