青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

JetByteTools(二)

Posted on 2009-09-20 16:53 S.l.e!ep.¢% 閱讀(1322) 評論(1)  編輯 收藏 引用 所屬分類: IOCP

IOCP 跟線程池脫不了關系

以前寫過一個線程類
http://m.shnenglu.com/sleepwom/archive/2009/02/07/73161.html

JetByteTools里的線程類是這樣的,作了一些小改動

今天才知道,原來C++的虛函數可以寫成 private: ......

??? private?:

??????
virtual?unsigned?int?Run()?=?0

#if ?defined?(_MSC_VER)?&&?(_MSC_VER?>=?1020)
#pragma?once
#endif

#ifndef?JETBYTE_TOOLS_WIN32_THREAD_INCLUDED__
#define ?JETBYTE_TOOLS_WIN32_THREAD_INCLUDED__
////////////////////////////////////////////////////////////////////////////// /
//
// ?File???????????:?$Workfile:?Thread.h?$
// ?Version????????:?$Revision:?3?$
// ?Function???????:?
//
// ?Author?????????:?$Author:?Len?$
// ?Date???????????:?$Date:?20/05/02?23:17?$
//
// ?Notes??????????:?
//
// ?Modifications??:
//
// ?$Log:?/Clients/PayPoint/e-Voucher/JetByteTools/Win32Tools/Thread.h?$
// ?
// ?3?????20/05/02?23:17?Len
// ?Updated?copyright?and?disclaimers.
// ?
// ?2?????10/05/02?19:25?Len
// ?Lint?options?and?code?cleaning.
// ?
// ?1?????9/05/02?18:47?Len
// ?
////////////////////////////////////////////////////////////////////////////// /
//
// ?Copyright?1997?-?2002?JetByte?Limited.
//
// ?JetByte?Limited?grants?you?("Licensee")?a?non-exclusive,?royalty?free,?
// ?licence?to?use,?modify?and?redistribute?this?software?in?source?and?binary?
// ?code?form,?provided?that?i)?this?copyright?notice?and?licence?appear?on?all?
// ?copies?of?the?software;?and?ii)?Licensee?does?not?utilize?the?software?in?a?
// ?manner?which?is?disparaging?to?JetByte?Limited.
//
// ?This?software?is?provided?"as?is"?without?a?warranty?of?any?kind.?All?
// ?express?or?implied?conditions,?representations?and?warranties,?including
// ?any?implied?warranty?of?merchantability,?fitness?for?a?particular?purpose
// ?or?non-infringement,?are?hereby?excluded.?JetByte?Limited?and?its?licensors?
// ?shall?not?be?liable?for?any?damages?suffered?by?licensee?as?a?result?of?
// ?using,?modifying?or?distributing?the?software?or?its?derivatives.?In?no
// ?event?will?JetByte?Limited?be?liable?for?any?lost?revenue,?profit?or?data,
// ?or?for?direct,?indirect,?special,?consequential,?incidental?or?punitive
// ?damages,?however?caused?and?regardless?of?the?theory?of?liability,?arising?
// ?out?of?the?use?of?or?inability?to?use?software,?even?if?JetByte?Limited?
// ?has?been?advised?of?the?possibility?of?such?damages.
//
// ?This?software?is?not?designed?or?intended?for?use?in?on-line?control?of?
// ?aircraft,?air?traffic,?aircraft?navigation?or?aircraft?communications;?or?in?
// ?the?design,?construction,?operation?or?maintenance?of?any?nuclear?
// ?facility.?Licensee?represents?and?warrants?that?it?will?not?use?or?
// ?redistribute?the?Software?for?such?purposes.?
//
////////////////////////////////////////////////////////////////////////////// /

////////////////////////////////////////////////////////////////////////////// /

// ?Lint?options
//
// lint?-save
// lint?-esym(1704,?CThread::CThread)???private?(copy)?constructor?
//
////////////////////////////////////////////////////////////////////////////// /

#ifndef?_WINDOWS_
#define ?WIN32_LEAN_AND_MEAN
#include?
< windows.h >
#undef ?WIN32_LEAN_AND_MEAN
#endif



////////////////////////////////////////////////////////////////////////////// /
// ?Namespace:?JetByteTools::Win32
////////////////////////////////////////////////////////////////////////////// /

namespace ?JetByteTools? {
namespace ?Win32? {

////////////////////////////////////////////////////////////////////////////// /
// ?CThread
////////////////////////////////////////////////////////////////////////////// /

class ?CThread?
{
???
public ?:
???
??????CThread();
??????
??????
virtual ? ~ CThread();

??????HANDLE?GetHandle();

??????
void ?Wait()? const ;

??????
bool ?Wait(DWORD?timeoutMillis)? const ;

??????
void ?Start();

??????
void ?Terminate(DWORD?exitCode? = ? 0 );

???
private ?:

??????
virtual ?unsigned? int ?Run()? = ? 0 ;

??????
static ?unsigned? int ?__stdcall?ThreadFunction( void ? * pV);

??????HANDLE?m_hThread;

??????
// ?No?copies?do?not?implement
??????CThread( const ?CThread? & rhs);
??????CThread?
& operator = ( const ?CThread? & rhs);
}
;

////////////////////////////////////////////////////////////////////////////// /
// ?Namespace:?JetByteTools::Win32
////////////////////////////////////////////////////////////////////////////// /

}
? // ?End?of?namespace?Win32
}
? // ?End?of?namespace?JetByteTools?

////////////////////////////////////////////////////////////////////////////// /
// ?Lint?options
//
// lint?-restore
//
////////////////////////////////////////////////////////////////////////////// /

#endif ? // ?JETBYTE_TOOLS_WIN32_THREAD_INCLUDED__

////////////////////////////////////////////////////////////////////////////// /
// ?End?of?file
////////////////////////////////////////////////////////////////////////////// /


////////////////////////////////////////////////////////////////////////////// /
//
// ?File???????????:?$Workfile:?Thread.cpp?$
// ?Version????????:?$Revision:?3?$
// ?Function???????:?
//
// ?Author?????????:?$Author:?Len?$
// ?Date???????????:?$Date:?20/05/02?23:17?$
//
// ?Notes??????????:?
//
// ?Modifications??:
//
// ?$Log:?/Clients/PayPoint/e-Voucher/JetByteTools/Win32Tools/Thread.cpp?$
// ?
// ?3?????20/05/02?23:17?Len
// ?Updated?copyright?and?disclaimers.
// ?
// ?2?????10/05/02?19:25?Len
// ?Lint?options?and?code?cleaning.
// ?
// ?1?????9/05/02?18:47?Len
// ?
////////////////////////////////////////////////////////////////////////////// /
//
// ?Copyright?1997?-?2002?JetByte?Limited.
//
// ?JetByte?Limited?grants?you?("Licensee")?a?non-exclusive,?royalty?free,?
// ?licence?to?use,?modify?and?redistribute?this?software?in?source?and?binary?
// ?code?form,?provided?that?i)?this?copyright?notice?and?licence?appear?on?all?
// ?copies?of?the?software;?and?ii)?Licensee?does?not?utilize?the?software?in?a?
// ?manner?which?is?disparaging?to?JetByte?Limited.
//
// ?This?software?is?provided?"as?is"?without?a?warranty?of?any?kind.?All?
// ?express?or?implied?conditions,?representations?and?warranties,?including
// ?any?implied?warranty?of?merchantability,?fitness?for?a?particular?purpose
// ?or?non-infringement,?are?hereby?excluded.?JetByte?Limited?and?its?licensors?
// ?shall?not?be?liable?for?any?damages?suffered?by?licensee?as?a?result?of?
// ?using,?modifying?or?distributing?the?software?or?its?derivatives.?In?no
// ?event?will?JetByte?Limited?be?liable?for?any?lost?revenue,?profit?or?data,
// ?or?for?direct,?indirect,?special,?consequential,?incidental?or?punitive
// ?damages,?however?caused?and?regardless?of?the?theory?of?liability,?arising?
// ?out?of?the?use?of?or?inability?to?use?software,?even?if?JetByte?Limited?
// ?has?been?advised?of?the?possibility?of?such?damages.
//
// ?This?software?is?not?designed?or?intended?for?use?in?on-line?control?of?
// ?aircraft,?air?traffic,?aircraft?navigation?or?aircraft?communications;?or?in?
// ?the?design,?construction,?operation?or?maintenance?of?any?nuclear?
// ?facility.?Licensee?represents?and?warrants?that?it?will?not?use?or?
// ?redistribute?the?Software?for?such?purposes.?
//
////////////////////////////////////////////////////////////////////////////// /

#include?
" Thread.h "

#include?
< process.h >

#include?
" Win32Exception.h "
#include?
" Utils.h "

////////////////////////////////////////////////////////////////////////////// /
// ?Lint?options
//
// lint?-save
// lint?-esym(1763,?CThread::GetHandle)?const?member?indirectly?modifies?obj
//
// ?Member?not?defined
// lint?-esym(1526,?CThread::CThread)
// lint?-esym(1526,?CThread::operator=)
//
////////////////////////////////////////////////////////////////////////////// /

////////////////////////////////////////////////////////////////////////////// /

// ?Namespace:?JetByteTools::Win32
////////////////////////////////////////////////////////////////////////////// /

namespace ?JetByteTools? {
namespace ?Win32? {

////////////////////////////////////////////////////////////////////////////// /
// ?CThread
////////////////////////////////////////////////////////////////////////////// /

CThread::CThread()
???:??m_hThread(INVALID_HANDLE_VALUE)
{

}

??????
CThread::
~ CThread()
{
???
if ?(m_hThread? != ?INVALID_HANDLE_VALUE)
???
{
??????(
void )?::CloseHandle(m_hThread);
???}


???m_hThread?
= ?NULL;

???
// lint?-e{1540}?m_hThread?neither?freed?nor?zeroed?in?destructor
}


HANDLE?CThread::GetHandle()
{
???
return ?m_hThread;
}


void ?CThread::Start()
{
???
if ?(m_hThread? == ?INVALID_HANDLE_VALUE)
???
{
??????unsigned?
int ?threadID? = ? 0 ;

??????m_hThread?
= ?(HANDLE)::_beginthreadex( 0 ,? 0 ,?ThreadFunction,?( void * ) this ,? 0 ,? & threadID);

??????
if ?(m_hThread? == ?INVALID_HANDLE_VALUE)
??????
{
?????????
throw ?CWin32Exception(_T( " CThread::Start()?-?_beginthreadex " ),?GetLastError());
??????}

???}

???
else
???
{
??????
throw ?CException(_T( " CThread::Start() " ),?_T( " Thread?already?running?-?you?can?only?call?Start()?once! " ));
???}

}


void ?CThread::Wait()? const
{
???
if ?( ! Wait(INFINITE))
???
{
??????
throw ?CException(_T( " CThread::Wait() " ),?_T( " Unexpected?timeout?on?infinite?wait " ));
???}

}


bool ?CThread::Wait(DWORD?timeoutMillis)? const
{
???
// ?TODO?base?class??Waitable?
??? bool ?ok;

???DWORD?result?
= ?::WaitForSingleObject(m_hThread,?timeoutMillis);

???
if ?(result? == ?WAIT_TIMEOUT)
???
{
??????ok?
= ? false ;
???}

???
else ? if ?(result? == ?WAIT_OBJECT_0)
???
{
??????ok?
= ? true ;
???}

???
else
???
{
??????
throw ?CWin32Exception(_T( " CThread::Wait()?-?WaitForSingleObject " ),?::GetLastError());
???}

????
???
return ?ok;
}


unsigned?
int ?__stdcall?CThread::ThreadFunction( void ? * pV)
{
???unsigned?
int ?result? = ? 0 ;

???CThread
* ?pThis? = ?(CThread * )pV;
???
???
if ?(pThis)
???
{
??????
try
??????
{
?????????result?
= ?pThis -> Run();
??????}

??????
catch ()
??????
{
??????????DEBUG_ONLY(Output(_T(
" CThread::ThreadFunction()?-?Unknown?Exception " ))?);
??????}

???}


???
return ?result;
}


void ?CThread::Terminate(
???DWORD?exitCode?
/* ?=?0? */ )
{
???
if ?( ! ::TerminateThread(m_hThread,?exitCode))
???
{
??????
// ?TODO?we?could?throw?an?exception?here
???}

}


////////////////////////////////////////////////////////////////////////////// /
// ?Namespace:?JetByteTools::Win32
////////////////////////////////////////////////////////////////////////////// /

}
? // ?End?of?namespace?Win32
}
? // ?End?of?namespace?JetByteTools?

////////////////////////////////////////////////////////////////////////////// /
// ?Lint?options
//
// lint?-restore
//
////////////////////////////////////////////////////////////////////////////// /

////////////////////////////////////////////////////////////////////////////// /

// ?End?of?file
////////////////////////////////////////////////////////////////////////////// /


使用也很簡單
#include?<stdio.h>
#include?
"Thread.h"

class?CThreadTest?:?public?JetByteTools::Win32::CThread
{
public:

private:
????
virtual?unsigned?int?Run()
????
{
????????printf(
"Run?Thread\n");
????????
????????
while(true)
????????
{
????????}


????????
return?0;
????}

}
;

int?main()
{
????CThreadTest?test;
????test.Start();
????
????(
void)test.Wait(1000);

????test.Terminate();

????printf(
"success\n");
????
return?0;
}


調用 start() 線程就開始,退出程序時,如果允許就 wait(), 如果很急,就直接 Terminate(),

Feedback

# re: JetByteTools(二)   回復  更多評論   

2009-09-21 15:18 by 一豬
JetByteTools代碼可以提供一份嗎?寫了,好了好久沒找到免費下載的。多謝了!
郵箱: zhlong.1988@163.com
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            狠狠88综合久久久久综合网| 欧美三级乱人伦电影| 久久久久免费| 久久久精品午夜少妇| 久久www成人_看片免费不卡| 欧美在线综合视频| 久热精品在线视频| 欧美激情1区2区3区| 亚洲精品永久免费| 亚洲欧洲在线看| 亚洲成人资源| 亚洲乱码视频| 亚洲欧美一区二区三区久久 | 韩国三级电影一区二区| 精品成人一区二区三区| 亚洲精品一区二区三区不| 欧美国产日韩一区二区三区| 亚洲第一精品久久忘忧草社区| 欧美成人中文字幕| 亚洲人人精品| 午夜精品99久久免费| 老司机精品视频网站| 欧美日韩在线三区| 国产综合视频| 亚洲视频在线看| 免费成人高清视频| 亚洲一区二区三区777| 久久久久久久综合| 欧美性理论片在线观看片免费| 国产一区二区日韩精品| 亚洲乱码国产乱码精品精可以看 | 男人插女人欧美| 一区二区三区四区五区精品视频| 欧美综合国产精品久久丁香| 欧美精品在线观看播放| 国一区二区在线观看| 99视频在线精品国自产拍免费观看| 久久福利一区| 亚洲视频www| 欧美日韩国产一级片| 亚洲国内高清视频| 久久久综合网| 亚洲欧美日韩一区在线| 欧美日韩在线播| 亚洲精品久久7777| 免费看精品久久片| 香蕉久久精品日日躁夜夜躁| 欧美日韩情趣电影| 91久久精品美女高潮| 久久综合色综合88| 久久精品视频导航| 狠狠爱www人成狠狠爱综合网| 性做久久久久久久免费看| 亚洲美女视频网| 欧美日韩高清在线一区| 99国产精品99久久久久久粉嫩| 米奇777在线欧美播放| 欧美在线播放高清精品| 国产精品丝袜xxxxxxx| 亚洲欧美中文另类| 亚洲午夜激情网站| 国产精品日韩欧美一区二区三区| 亚洲免费影视第一页| 一区二区日韩| 国产精品一区亚洲| 久久久国产精品亚洲一区 | 亚洲视频观看| 一区二区激情视频| 国产精品第一页第二页第三页| 亚洲私拍自拍| 午夜激情久久久| 黑人巨大精品欧美黑白配亚洲| 亚洲视频在线播放| 欧美一区成人| 久久av资源网| 亚洲国产精品国自产拍av秋霞| 农夫在线精品视频免费观看| 免费91麻豆精品国产自产在线观看| 91久久精品美女| 夜夜嗨一区二区| 国产精品一区久久久久| 久久香蕉国产线看观看网| 久久影音先锋| 国产精品99久久久久久久久 | 一本色道久久综合狠狠躁篇怎么玩 | 亚洲另类在线视频| 一区二区三区高清在线| 国产精品永久免费观看| 久久亚洲国产成人| 欧美乱大交xxxxx| 久久精品国产99国产精品澳门| 久久综合色8888| 亚洲一区一卡| 久久婷婷亚洲| 亚洲永久精品大片| 久久久精品日韩欧美| 日韩视频免费在线观看| 亚洲无玛一区| 亚洲福利视频二区| 亚洲小说欧美另类社区| 亚洲国产精品一区二区www| 亚洲视频一二| 91久久精品视频| 午夜一级久久| 中文高清一区| 久久久久久亚洲精品中文字幕 | 99精品视频免费观看视频| 一区二区三区四区五区视频| 禁断一区二区三区在线| 夜夜嗨av一区二区三区网页| 亚洲电影成人| 欧美在线|欧美| 亚洲欧美色一区| 欧美激情a∨在线视频播放| 久久精品亚洲精品国产欧美kt∨| 欧美日韩国产另类不卡| 农夫在线精品视频免费观看| 国产美女精品在线| 一本色道久久88精品综合| 亚洲黄色免费电影| 久久精品30| 久久精品免视看| 国产精品入口| 一区二区三区高清视频在线观看| 洋洋av久久久久久久一区| 久热精品视频在线免费观看| 欧美有码视频| 国产精品美女久久久久aⅴ国产馆| 91久久精品国产91性色| 男女精品视频| 亚洲图片欧洲图片av| 欧美v国产在线一区二区三区| 久久露脸国产精品| 国产亚洲va综合人人澡精品| 亚洲性夜色噜噜噜7777| 亚洲视频成人| 欧美日韩美女| 一本久久综合亚洲鲁鲁五月天| 亚洲精品视频一区二区三区| 久久影院午夜论| 欧美成人精品不卡视频在线观看| 一区二区在线观看视频| 久久久久网站| 亚洲电影欧美电影有声小说| 亚洲经典三级| 欧美日韩视频免费播放| 国产精品99久久久久久有的能看| 亚洲在线网站| 国产精品久久久久免费a∨大胸| 亚洲美女少妇无套啪啪呻吟| 亚洲欧美激情视频| 国产毛片久久| 麻豆精品传媒视频| 亚洲国产婷婷香蕉久久久久久| 亚洲免费成人| 国产精品入口66mio| 午夜精品福利一区二区三区av | 一色屋精品亚洲香蕉网站| 久久综合九色综合欧美狠狠| 亚洲国产91精品在线观看| 在线视频你懂得一区| 国产精品视频yy9099| 欧美在线一二三四区| 免费亚洲一区| 亚洲美女91| 国产精品欧美经典| 久久躁狠狠躁夜夜爽| 亚洲靠逼com| 久久久久久久尹人综合网亚洲| 亚洲黄色在线| 国产酒店精品激情| 欧美成人精品一区| 亚洲在线日韩| 亚洲国产综合在线| 久久精品国产亚洲一区二区| 亚洲毛片在线免费观看| 国产欧美一区二区精品性色| 久久综合网络一区二区| 亚洲图中文字幕| 欧美激情五月| 久久精品欧美日韩| 一级日韩一区在线观看| 韩国av一区二区三区四区| 欧美精品在线播放| 久久一区二区三区av| 一区二区三区波多野结衣在线观看| 久久亚洲图片| 亚洲欧美三级在线| 99视频精品全国免费| 禁断一区二区三区在线| 国产精品视频yy9099| 欧美激情综合色综合啪啪| 久久国产精品亚洲77777| 日韩视频在线一区| 欧美刺激性大交免费视频| 久久国产精品久久久| 亚洲视频欧洲视频| 亚洲另类在线一区| 亚洲国产日本| 亚洲一区二区在线播放|