锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美久久天天综合香蕉伊,国产精品久久久天天影视香蕉 ,一级做a爰片久久毛片人呢http://m.shnenglu.com/saiksy/archive/2011/05/18/146706.htmlsaiksysaiksyWed, 18 May 2011 14:43:00 GMThttp://m.shnenglu.com/saiksy/archive/2011/05/18/146706.htmlhttp://m.shnenglu.com/saiksy/comments/146706.htmlhttp://m.shnenglu.com/saiksy/archive/2011/05/18/146706.html#Feedback0http://m.shnenglu.com/saiksy/comments/commentRss/146706.htmlhttp://m.shnenglu.com/saiksy/services/trackbacks/146706.html姣忎釜緋葷粺閮芥湁綰跨▼錛岃岀嚎紼嬬殑鏈閲嶈鐨勪綔鐢ㄥ氨鏄茍琛屽鐞嗭紝鎻愰珮杞歡鐨勫茍鍙戠巼銆傞拡瀵圭晫闈㈡潵璇達紝榪樿兘鎻愰珮鐣岄潰鐨勫搷搴斿姏銆?/p>

 綰跨▼鍒嗕負鐣岄潰綰跨▼鍜屽伐浣滆呯嚎紼嬶紝鐣岄潰瀹為檯灝辨槸涓涓嚎紼嬬敾鍑烘潵鐨勪笢瑗匡紝榪欎釜綰跨▼緇存姢涓涓?#8220;娑堟伅闃熷垪”錛?#8220;娑堟伅闃熷垪”涔熸槸鐣岄潰綰跨▼鍜屽伐浣滆呯嚎紼嬬殑鏈澶у尯鍒紝榪欎釜璇嶅簲璇ヨ繘鍒頒綘鐨勮剳瀛愰噷錛屾牴娣辮拏鍥虹殑錛?/p>

濡傛灉鍦ㄧ晫闈㈢嚎紼嬬殑鏌愪釜鍦版柟鍋滀綇錛岃繖璇存槑瀹冨鐞嗕笉浜嗙獥鍙f秷鎭簡錛屾墍浠ユ湁鏃跺欐垜浠氨浼氱湅鍒版暣涓晫闈㈡棤鍝嶅簲浜嗐傝繖縐嶉棶棰樺悗闈細鎻愪緵涓涓彨銆WaitForObjectEx銆鐨勫嚱鏁版潵瑙e喅錛屾垜浠悗闈㈠啀璋堛?/p>

綰跨▼棣栧厛灝辨槸瀹冪殑鍒涘緩錛屽垱寤烘槸鐢ㄤ笅闈㈣繖涓嚱鏁幫細CreateThread;銆鍏蜂綋鐨勫弬鏁版垜涓嶈浜嗭紝鑷繁鏌ワ輯錛籌激錛傚叾涓殑銆Thread1銆鏄嚎紼嬪嚱鏁般傜嚎紼嬪嚱鏁版槸涓涓叏灞鍑芥暟錛屽涓嬶細

DWORD WINAPI Thread1(LPVOID lpParam)
{
  while(1)
 {
  OutputDebugString("11111");

  Sleep(10);
 }
 return 0;
}

// 涓嬮潰榪欎竴鍙ユ槸鍒涘緩綰跨▼
CreateThread(NULL, 0, Thread1, 0, 0, NULL);

褰撶劧鎴戜滑涓嶈兘璁╀竴涓嚎紼嬭嚜鐢熻嚜鐏紝閭f牱鏈夊彲鑳藉湪浣犻鍑虹▼搴忕殑鏃跺欏嚭鐜頒竴浜涜帿鍚嶅叾濡欑殑闂錛屾垨鑰呬涪澶變竴浜涙暟鎹紝鎴栬呯粰浣犲脊涓涓穿婧冪殑瀵硅瘽妗嗙瓑絳夈傘傘?/p>

鎵浠ユ垜浠氨瑕佸榪欎釜綰跨▼榪涜綆$悊錛岄鍏堝氨鏄瀹冮鍑恒?/p>

鎴戜滑緇欏畠鐨剋hile鍔犱笂涓涓?BOOL 鍙橀噺 g_bExitThread鐨勫垽鏂紝榪欐牱鐨勮瘽錛岀嚎紼嬪嚱鏁板氨鍙樻垚涓嬮潰榪欐牱錛?/p>

DWORD WINAPI Thread1(LPVOID lpParam)
{
  while(!g_bExitThread)
 {
  OutputDebugString("11111");

  Sleep(10);
 }
 return 0;
}

鐒跺悗鍦ㄩ渶瑕佸畠閫鍑虹殑鏃跺欐妸g_bExitThread璁句負TRUE錛岃〃紺猴紝鍠傦紝鍏勫紵錛屼綘璇ラ鍑轟簡銆?/p>

褰撶劧鎴戜滑榪樿鐭ラ亾瀹冩槸鍚︽垚鍔熼鍑轟簡錛屽洜涓虹嚎紼嬪彞鏌勬槸涓涓唴鏍稿璞★紝鎵浠ユ垜浠氨瑕佺敤鍒癢indows鐨刉aitForSingleObject鏉ョ瓑寰呬簡銆傚垱寤虹殑鏃跺欏拰絳夊緟瀹冮鍑虹殑浠g爜灝辮鏀瑰彉浜嗭紝澶氫簡涓涓?HANDLE g_hTrd鐨勫彉閲忥細

// 鍒涘緩
g_bExitThread = FALSE;
g_hTrd = CreateThread(NULL, 0, Thread1, 0, 0, NULL);

// 絳夊緟綰跨▼緇撴潫
g_bExitThread = TRUE;

 if(g_hTrd != NULL)
 {
  DWORD dwRet = WaitForSingleObject(g_hTrd, 5000);
  if(dwRet == WAIT_OBJECT_0)
  {
   AfxMessageBox("Thread exit success!");
  }
  else
  {
   DWORD dwRet = 0;
   GetExitCodeThread(g_hTrd, &dwRet);
   TerminateThread(g_hTrd, dwRet);
   AfxMessageBox("Thread exit, but not all ok!");
  }
  CloseHandle(g_hTrd);
  g_hTrd = NULL;
 }

涓婇潰璇翠簡鍦ㄧ晫闈㈢嚎紼嬮噷絳夊緟鍒殑綰跨▼緇撴潫錛屼篃灝辨槸浣跨敤 WaitForSingleObject 鐨勬椂鍊欎細闃誨鏁翠釜紿楀彛娑堟伅鐨勫鐞嗭紝鎵浠ユ垜浠鏋滃湪鐣岄潰綰跨▼閲岃絳夊緟鍒殑鍐呮牳瀵硅薄鏃訛紝鎴戜滑瑕侀噰鐢ㄨ繖縐?#8220;絳変竴涓嬶紝澶勭悊涓涓嬬晫闈㈡秷鎭?#8221;鐨勬柟娉曘傛垜宸茬粡鍐欏ソ浜嗕竴涓?WaitForObjectEx 鐨勫嚱鏁幫紝濡備笅錛?/p>

// 姝ゅ嚱鏁板彧鑳界敤浜庣晫闈㈢嚎紼?br />static DWORD WaitForObjectEx( HANDLE hHandle, DWORD dwMilliseconds )
{
 BOOL bRet;
 MSG msg;
 INT iWaitRet;
 int nTimeOut = 0;
 while( (bRet = ::GetMessage( &msg, NULL, 0, 0 )) != 0)
 {
  if(nTimeOut++ * 20 >= dwMilliseconds)
   break;

  iWaitRet = WaitForSingleObject(hHandle, 20);
  if(iWaitRet != WAIT_TIMEOUT)
  {
   break;
  }
  if (bRet == -1)
  {
   break;
  }
  else
  {
   ::TranslateMessage(&msg);
   ::DispatchMessage(&msg);
  }
 }

 return iWaitRet;
}

寰堝鏃跺欙紝鎴戜滑涓嶆兂鎶婄嚎紼嬩綔涓轟竴涓叏灞鍑芥暟鏉ヤ嬌鐢紝鎵浠ヨ繖涓椂鍊欐垜浠妸綰跨▼浣滀負涓涓被鐨勯潤鎬佹垚鍛樺璞℃潵鍐欍傚綋鐒朵篃涓嶈兘灝戜簡鍒氭墠鐨勪袱涓彉閲忥細閫鍑烘爣蹇楀拰綰跨▼鍙ユ焺銆傦紙璁捐繖涓被鏄疌TestThreadDlg錛?/p>

// H 鏂囦歡
BOOL m_bExitThread;
 HANDLE m_hTrd;
 static DWORD WINAPI Thread1(LPVOID lpParam);

// CPP鏂囦歡錛屽垱寤虹殑鏃跺欐妸 this 鎸囬拡浼犺繘鍘伙紝鍥犱負綾婚潤鎬佹垚鍛樺嚱鏁頒笉鑳借闂被鐨勯潪闈欐佹垚鍛橈紝娌℃湁this鎸囬拡
//錛圕++鐨勭煡璇嗙偣錛?br /> m_bExitThread = FALSE;
 m_hTrd = CreateThread(NULL, 0, Thread1, this, 0, NULL);

綰跨▼鍑芥暟鍙樻垚浜嗭細

 DWORD WINAPI CTestThreadDlg::Thread1(LPVOID lpParam)
 {
  CTestThreadDlg *pDlg = (CTestThreadDlg*)lpParam;
  while(!pDlg->m_bExitThread)
  {
   OutputDebugString("11111");
 
   Sleep(10);
  }
  return 0;
 }

 

褰撴湁鍑犱釜綰跨▼涓璧瘋窇鐨勬椂鍊欙紝鎴戜滑灝辮娉ㄦ剰綰跨▼鐨勫悓姝ラ棶棰樹簡錛岀嚎紼嬬殑鍚屾涓鑸潵璇達紝鏄湪澶氫釜綰跨▼鍏辯敤浜嗚祫婧愮殑鏃跺欍傛瘮濡備袱涓嚎紼嬮兘鐢ㄥ埌浜嗗悓涓涓猇ECTOR錛岄兘瀵筕ECTOR榪涜鎻掑叆鎿嶄綔錛屼笉騫哥殑鏄紝VECTOR涓嶆槸綰跨▼瀹夊叏鐨勶紝榪欎釜鏃跺欑▼搴忓氨浼氬穿婧冿紝鎵浠ユ垜浠氨瑕佸VECTOR榪欎釜璧勬簮鍋氬悓姝ワ紝鍚屾鐨勬剰鎬濇槸“鎴戣闂殑鏃跺欙紝浣犵瓑寰?#8221;銆傜▼搴忓ぇ鑷村涓嬶細

DWORD WINAPI CTestThreadDlg::Thread1(LPVOID lpParam)
 {
  CTestThreadDlg *pDlg = (CTestThreadDlg*)lpParam;
  while(!pDlg->m_bExitThread)
  {
   OutputDebugString("11111");
 
   pDlg->m_csForVec.Lock();
   pDlg->m_vecTest.push_back("111");
   pDlg->m_csForVec.Unlock();
 
   Sleep(10);
  }
  return 0;
 }

DWORD WINAPI CTestThreadDlg::Thread2(LPVOID lpParam)
{
 CTestThreadDlg *pDlg = (CTestThreadDlg*)lpParam;
 while(!pDlg->m_bExitThread2)
 {
  OutputDebugString("222");

  pDlg->m_csForVec.Lock();
  pDlg->m_vecTest.push_back("222");
  pDlg->m_csForVec.Unlock();

  Sleep(10);
 }
 return 0;
}

m_csForVec 鏄竴涓狢CriticalSection鍙橀噺錛岃繖涓悓姝ュ璞″拰鍏朵粬鐨勫悓姝ュ彉閲忥紙浜嬩歡銆佷俊鍙烽噺銆佷簰鏂ュ尯絳夛級鏈変竴浜涗笉涓鏍鳳紝渚嬪鍙兘鍦ㄥ悓涓涓繘紼嬬殑綰跨▼闂磋闂佸湪鎿嶄綔緋葷粺鐨勭敤鎴鋒佽闂紝鍏朵粬鐨勫繀欏昏繘鍏ユ牳蹇冩併傛墍浠ヨ繖鏍峰鑷翠簡榪欑鍏抽敭鍖虹殑鏍稿績瀵硅薄鐨勯熷害瑕佹瘮鍏朵粬鐨勫揩100鍊嶅乏鍙熾傘傘?/p>

涓婇潰宸茬粡璇翠簡綰跨▼鐨勫垱寤恒佺鐞嗭紙閫鍑虹嚎紼嬨佺瓑寰呯嚎紼嬶級銆佸悓姝ョ瓑錛岄偅鎴戜滑鍙戠幇浜嗕粈涔堝叡鎬у憿錛熶綔涓轟竴涓▼搴忓憳錛屾垜浠寰堟晱鎰熺殑鍙戠幇榪欎簺浠g爜涓婄殑鍏辨э紝榪欐槸鎴戜滑璁捐浠g爜鐨勪富瑕佸墠鎻愩?/p>

棣栧厛鎴戜滑鍙戠幇涓婇潰鐨勭嚎紼嬮兘鏈変袱涓彉閲忥細
BOOL m_bExitThread;  // 璁╃嚎紼嬮鍑虹殑鏍囧織
 HANDLE m_hTrd;  // 綰跨▼鍙ユ焺

鍙﹀鎴戜滑WaitForSingleObject 鐨勬椂鍊欎笉鑳芥棤闄愮瓑寰咃紝鎵浠ヨ澶氫竴涓?DWORD m_dwWaitTimeOut;

鐢變簬鎴戞兂鎶婄嚎紼嬪惎鍔ㄥ拰緇撴潫灝佽璧鋒潵錛屾墍浠ユ垜璁捐浜嗚繖鍑犱釜鎺ュ彛錛?/p>

 BOOL Start(LPVOID lpParam);  //  鍚姩綰跨▼錛岀嚎紼嬫墍闇瑕佺殑鍙傛暟浠庤繖閲屼紶榪?br /> BOOL End(); // 緇撴潫綰跨▼
 virtual void Run(); // 閲嶅啓Run鍑芥暟

鎵浠ユ暣涓殑綰跨▼灝佽鎴愪互涓嬬殑綾伙細

// MyThread.h

#ifndef MY_THREAD_H
#define MY_THREAD_H

class CMyThread
{
public:
 CMyThread();
 virtual ~CMyThread();

 BOOL Start(LPVOID lpParam);
 BOOL End();
 virtual void Run();

protected:
 static DWORD WINAPI Thread(LPVOID lpParam);
 void RunOnceEnd();

 DWORD m_dwWaitTimeOut;
 BOOL m_bExitThread;
 HANDLE m_hTrd;
 LPVOID m_lpParam;
};

#endif

// MyThread.Cpp

#include "stdafx.h"
#include "MyThread.h"
/////////////////////////////////////////////////////////////////////////////
// CMyThread
CMyThread::CMyThread()
{
 m_bExitThread = FALSE;
 m_hTrd = NULL;
 m_dwWaitTimeOut = 5000;
}

CMyThread::~CMyThread()
{

}

BOOL CMyThread::Start(LPVOID lpParam)
{
 m_lpParam = lpParam;
 m_bExitThread = FALSE;
 m_hTrd = CreateThread(NULL, 0, Thread, this, 0, NULL);

 return TRUE;
}

BOOL CMyThread::End()
{
 m_bExitThread = TRUE;

 if(m_hTrd != NULL)
 {
  DWORD dwRet = WaitForSingleObject(m_hTrd, m_dwWaitTimeOut);
  if(dwRet == WAIT_OBJECT_0)
  {
   AfxMessageBox("Thread exit success!");
  }
  else
  {
   DWORD dwRet = 0;
   GetExitCodeThread(m_hTrd, &dwRet);
   TerminateThread(m_hTrd, dwRet);
   AfxMessageBox("Thread fucking exit!");
  }

  CloseHandle(m_hTrd);
  m_hTrd = NULL;
 }
 
 return TRUE;
}

DWORD WINAPI CMyThread::Thread(LPVOID lpParam)
{
 CMyThread *pTrd = (CMyThread *)lpParam;
 
 while(!pTrd->m_bExitThread)
 {
  pTrd->Run();
 }

 return 0;
}

void CMyThread::RunOnceEnd()
{
 m_bExitThread = TRUE;
 CloseHandle(m_hTrd);
 m_hTrd = NULL;
}

void CMyThread::Run()
{
}

鎴戜滑闇瑕佸啓鎴戜滑鑷繁鐨勭嚎紼嬬殑鏃跺欏氨閲嶈澆涓涓嬭繖涓猂un鍑芥暟

// 媧劇敓鍑轟竴涓被
class CMyThread1 : public CMyThread
{
public:
 virtual void Run();
};

// 鏀瑰啓Run鍑芥暟
void CMyThread1::Run()
{
 CTestThreadDlg *pDlg = (CTestThreadDlg *)m_lpParam;

 OutputDebugString("222");
 
 pDlg->m_csForVec.Lock();
 pDlg->m_vecTest.push_back("222");
 pDlg->m_csForVec.Unlock();
 
 Sleep(10);

 // 濡傛灉姝ょ嚎紼嬪彧鎯寵繍琛屼竴嬈★紝鍔犱笂涓嬮潰榪欏彞
 RunOnceEnd();
}


鐒跺悗鎴戜滑涔嬪墠鐨勪袱涓嚎紼嬬殑浣跨敤灝卞彉鎴愪簡涓嬮潰鐨勫艦寮忥細

CMyThread1 g_t1, g_t2, g_t3;
void CTestThreadDlg::OnButton3()
{
 g_t1.Start(this);
 g_t2.Start(this);
 g_t3.Start(this);
}

void CTestThreadDlg::OnButton4()
{
 g_t1.End();
 g_t2.End();
 g_t3.End(); 
}

鍙渶瑕佷互涓嬪嚑姝ワ細
1銆佹淳鐢熻嚜宸辯殑綰跨▼綾?br />2銆侀噸杞絉un鍑芥暟
3銆佽皟鐢⊿tart鍚姩綰跨▼
4銆佽皟鐢‥nd緇撴潫綰跨▼

褰撶劧榪欑灝佽鏂瑰紡鏄垜鑷繁鍠滄鐨勶紝灝佽鐨勭洰鐨勬槸鏂逛究浣跨敤錛岄殣钘忕粏鑺傦紝璇鎬綅鐪嬪畼涔熷彲浠ユ牴鎹嚜宸辯殑鍠滃ソ錛屽皝瑁呯嚎紼嬬殑浣跨敤鏂規硶錛屽鏋滆兘鍦ㄦ鍏紑涓涓嬩綘鐨勬垚鏋滐紝璁╂垜鍜屽ぇ瀹墮兘瀛︿範涓涓嬩綘鐨勮璁℃墜娉曪紝閭e氨鐪熸槸very good and 3q浜嗭紒

 


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/dylgsy/archive/2008/03/13/2176160.aspx



saiksy 2011-05-18 22:43 鍙戣〃璇勮
]]>
久久婷婷色综合一区二区| 久久国产精品一区二区| 久久久人妻精品无码一区| 麻豆久久| 久久人人妻人人爽人人爽| 久久水蜜桃亚洲av无码精品麻豆| 国产综合久久久久| 婷婷久久综合九色综合绿巨人| 国产成人精品久久亚洲高清不卡 | 97久久精品无码一区二区天美 | 久久久久综合网久久| 久久久久久久久波多野高潮| 久久久久成人精品无码中文字幕| 777久久精品一区二区三区无码| 久久久不卡国产精品一区二区 | 三级三级久久三级久久| 久久精品国产清自在天天线| 久久水蜜桃亚洲av无码精品麻豆 | 色播久久人人爽人人爽人人片AV| 久久婷婷五月综合97色| 久久精品国产亚洲AV无码娇色 | 99久久精品免费看国产| 精品久久亚洲中文无码| 久久精品无码av| 国产三级久久久精品麻豆三级| 午夜视频久久久久一区| 国产精品久久久久jk制服| 久久只这里是精品66| 国产综合免费精品久久久| 99久久99这里只有免费的精品| 中文精品99久久国产 | 精品久久久久久久国产潘金莲| 久久久久国产精品熟女影院| 亚洲国产成人久久笫一页| 99精品久久精品一区二区| 久久人妻少妇嫩草AV无码专区| 精品久久久中文字幕人妻| 午夜精品久久久久久| 国产精品99久久不卡| 久久青草国产精品一区| 精品久久久久久国产|