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

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>
            国产日韩一区二区三区| 欧美大香线蕉线伊人久久国产精品| 国产精品v亚洲精品v日韩精品| 久久影视精品| 欧美一级理论性理论a| 欧美午夜剧场| 欧美国产先锋| 欧美xx69| 亚洲国产欧美一区二区三区丁香婷| 久久爱www久久做| 午夜精品福利在线| 欧美一二区视频| 欧美日本精品一区二区三区| 欧美精品高清视频| 国产精品高潮呻吟| 国产一区二区无遮挡| 激情综合在线| 亚洲精品少妇30p| 亚洲一区免费在线观看| 久久激情五月丁香伊人| 欧美成人激情视频| aa国产精品| 欧美在线免费视屏| 欧美精品亚洲精品| 羞羞漫画18久久大片| 久久天天躁狠狠躁夜夜爽蜜月| 免费视频久久| 国产精品少妇自拍| 亚洲大胆人体视频| 亚洲在线一区二区| 欧美aaaaaaaa牛牛影院| 野花国产精品入口| 久久手机精品视频| 国产日产欧美a一级在线| 亚洲福利小视频| 亚洲午夜伦理| 女人天堂亚洲aⅴ在线观看| 亚洲乱码国产乱码精品精可以看 | 老司机免费视频久久| 欧美久久电影| 激情欧美一区二区三区在线观看| 99国产精品99久久久久久粉嫩| 亚洲欧美日韩第一区 | 小嫩嫩精品导航| 快播亚洲色图| 国产欧美一区二区三区国产幕精品 | 亚洲欧美日韩综合一区| 欧美精品精品一区| 一区在线播放| 久久激情综合| 亚洲午夜精品17c| 欧美绝品在线观看成人午夜影视| 国产在线国偷精品产拍免费yy| 亚洲伊人色欲综合网| 亚洲盗摄视频| 久久久久亚洲综合| 欧美日韩高清在线播放| 亚洲欧美在线免费观看| 久久精品国产欧美亚洲人人爽| 亚洲欧洲日产国产网站| 久久精品国亚洲| 一本综合精品| 欧美区一区二| 亚洲精品之草原avav久久| 可以看av的网站久久看| 先锋资源久久| 国产欧美日韩综合| 欧美在线观看视频| 欧美专区在线观看一区| 狠狠干狠狠久久| 欧美二区不卡| 欧美日韩国语| 午夜精品久久久久久久男人的天堂 | 欧美激情第3页| 亚洲精品久久7777| 日韩一级成人av| 国产精品亚洲片夜色在线| 欧美一区二区成人6969| 久久本道综合色狠狠五月| 伊人婷婷欧美激情| 亚洲人成亚洲人成在线观看| 欧美日韩亚洲一区三区| 亚洲午夜免费视频| 性色av一区二区三区在线观看| 国产日韩av在线播放| 牛牛精品成人免费视频| 欧美日韩福利在线观看| av成人毛片| 亚洲精品日韩一| 欧美精品久久久久久久免费观看| 久久夜色精品国产欧美乱| 久久黄色小说| 午夜老司机精品| 欧美揉bbbbb揉bbbbb| 久久久精品国产99久久精品芒果| 亚洲国产精品成人一区二区 | 亚洲美女一区| 久久久人成影片一区二区三区 | 亚洲精品免费电影| 久久er99精品| 午夜精品久久久久久99热| 亚洲福利专区| 久久久综合激的五月天| 一本久久a久久免费精品不卡| 久久国产直播| 国产精品亚洲综合色区韩国| 99热在线精品观看| 欧美日韩在线免费| 亚洲老司机av| 99www免费人成精品| 国产有码在线一区二区视频| 亚洲午夜精品一区二区三区他趣| 永久域名在线精品| 亚洲一区视频在线| 国产精品一区在线观看| 亚洲自拍另类| 国产午夜精品全部视频在线播放| 亚洲一区二区三| 欧美国产丝袜视频| 欧美ed2k| 久久蜜臀精品av| 欧美在线视频a| 国产一区自拍视频| 久久一日本道色综合久久| 性色av一区二区三区红粉影视| 国产精品网站在线观看| 国产色综合天天综合网| 亚洲影视九九影院在线观看| 国产精品久久久久9999高清| 午夜日韩在线| 欧美中文字幕视频| 在线看片日韩| 亚洲国产精品久久久久| 一本久道久久久| 中文在线资源观看网站视频免费不卡| 欧美激情亚洲国产| 欧美日韩情趣电影| 久久国产天堂福利天堂| 久久亚洲视频| 日韩视频免费在线| 亚洲午夜羞羞片| 久久不见久久见免费视频1| 久久精品国产精品亚洲| ●精品国产综合乱码久久久久| 亚洲国产成人精品女人久久久| 欧美日本国产精品| 久久本道综合色狠狠五月| 欧美高清在线| 一区二区91| 欧美在线视频二区| 一区二区欧美在线| 午夜在线精品偷拍| 亚洲精品视频在线播放| 午夜精品久久久久99热蜜桃导演| 国产欧美亚洲视频| 亚洲经典在线| 国产女优一区| 亚洲高清久久久| 国产日韩欧美一二三区| 亚洲福利国产精品| 亚洲在线成人精品| 免费欧美网站| 久久麻豆一区二区| 久久久久www| 国产日韩欧美三区| 亚洲人妖在线| 在线免费一区三区| 亚洲免费一在线| 1024精品一区二区三区| 午夜日韩在线| 中文一区在线| 亚洲福利av| 国产精品激情电影| 欧美成人激情在线| 国产欧美韩日| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲欧美日韩精品久久久久| 最新国产乱人伦偷精品免费网站| 亚洲一区二区视频在线| 亚洲黄一区二区三区| 性做久久久久久久久| 亚洲免费在线电影| 欧美日韩一区不卡| 久久蜜桃资源一区二区老牛| 欧美一区网站| 国产精品99免费看 | 欧美午夜在线| 亚洲国产另类久久精品| 亚洲大胆av| 另类专区欧美制服同性| 亚洲欧美经典视频| 亚洲主播在线播放| 欧美视频在线一区二区三区| 亚洲欧洲精品一区二区| 亚洲精品综合精品自拍| 欧美顶级大胆免费视频| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国产精品成人va在线观看| 亚洲丝袜av一区| 一区二区日韩|