锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲永久免费视频,亚洲视频日本,日韩一区二区精品视频http://www.shnenglu.com/suiaiguo/category/11253.html澶╄鍋ワ紝鍚涘瓙浠ヨ嚜寮轟笉鎭紱 鍦板娍鍧わ紝鍚涘瓙浠ュ帤寰瘋澆鐗?/description>zh-cnFri, 24 Jul 2009 15:21:26 GMTFri, 24 Jul 2009 15:21:26 GMT60澶氱嚎紼嬬紪紼嬫祬鏋愶紙3錛夆斺斿綰跨▼鐨勪簰鏂ヤ笌鍚屾http://www.shnenglu.com/suiaiguo/archive/2009/07/24/91045.htmlSagaSagaFri, 24 Jul 2009 07:14:00 GMThttp://www.shnenglu.com/suiaiguo/archive/2009/07/24/91045.htmlhttp://www.shnenglu.com/suiaiguo/comments/91045.htmlhttp://www.shnenglu.com/suiaiguo/archive/2009/07/24/91045.html#Feedback0http://www.shnenglu.com/suiaiguo/comments/commentRss/91045.htmlhttp://www.shnenglu.com/suiaiguo/services/trackbacks/91045.html綰跨▼鍚屾鏄寚綰跨▼涔嬮棿鎵鍏鋒湁鐨勪竴縐嶅埗綰﹀叧緋伙紝涓涓嚎紼嬬殑鎵ц渚濊禆鍙︿竴涓嚎紼嬬殑娑堟伅錛屽綋瀹冩病鏈夊緱鍒板彟涓涓嚎紼嬬殑娑堟伅鏃跺簲絳夊緟錛岀洿鍒版秷鎭埌杈炬椂鎵嶈鍞ら啋銆?br>綰跨▼浜掓枼鏄寚瀵逛簬鍏變韓鐨勮繘紼嬬郴緇熻祫婧愶紝鍦ㄥ悇鍗曚釜綰跨▼璁塊棶鏃剁殑鎺掑畠鎬с傚綋鏈夎嫢騫蹭釜綰跨▼閮借浣跨敤鏌愪竴鍏變韓璧勬簮鏃訛紝浠諱綍鏃跺埢鏈澶氬彧鍏佽涓涓嚎紼嬪幓浣跨敤錛屽叾瀹冭浣跨敤璇ヨ祫婧愮殑綰跨▼蹇呴』絳夊緟錛岀洿鍒板崰鐢ㄨ祫婧愯呴噴鏀捐璧勬簮銆傜嚎紼嬩簰鏂ュ彲浠ョ湅鎴愭槸涓縐嶇壒孌婄殑綰跨▼鍚屾錛堜笅鏂囩粺縐頒負(fù)鍚屾錛夈?br>
綰跨▼闂寸殑鍚屾鏂規(guī)硶澶т綋鍙垎涓轟袱綾伙細(xì)鐢ㄦ埛妯″紡鍜屽唴鏍告ā寮忋傞【鍚嶆濅箟錛屽唴鏍告ā寮忓氨鏄寚鍒╃敤緋葷粺鍐呮牳瀵硅薄鐨勫崟涓鎬ф潵榪涜鍚屾錛屼嬌鐢ㄦ椂闇瑕佸垏鎹㈠唴鏍告佷笌鐢ㄦ埛鎬侊紝鑰岀敤鎴鋒ā寮忓氨鏄笉闇瑕佸垏鎹㈠埌鍐呮牳鎬侊紝鍙湪鐢ㄦ埛鎬佸畬鎴愭搷浣溿?br>鐢ㄦ埛妯″紡涓嬬殑鏂規(guī)硶鏈夛細(xì)鍘熷瓙鎿嶄綔錛堜緥濡備竴涓崟涓鐨勫叏灞鍙橀噺錛夛紝涓寸晫鍖恒傚唴鏍告ā寮忎笅鐨勬柟娉曟湁錛氫簨浠訛紝淇″彿閲忥紝浜掓枼閲忋?br>涓嬮潰鎴戜滑鏉ュ垎鍒湅涓涓嬭繖浜涙柟娉曪細(xì)

鍘熷瓙鎿嶄綔錛堝叏灞鍙橀噺錛夛細(xì)
#include "stdafx.h"
#include 
"windows.h"
#include 
"stdio.h"

volatile int ThreadData = 1;

void ThreadProcess()
{
    
for(int i=0; i<6; i++)
    
{
        Sleep(
1000);
        printf(
"Sub  Thread Tick %5d!\n",(i+1)*1000);
    }

    ThreadData 
= 0;
    printf(
"Exit Sub Thread!\n");

}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThread;
    DWORD ThreadID;
    hThread
=CreateThread(NULL,
        
0,
        (LPTHREAD_START_ROUTINE)ThreadProcess,
        NULL,
        
0,
        
&ThreadID);

    
while (ThreadData)
    
{
        printf(
"Main Thread is waiting for Sub Thread!\n");
        Sleep(
600);
    }


    printf(
"Main Thread Finished! \n");
    system(
"pause");
    
return 0;
}

   鍦ㄤ笂闈㈢殑紼嬪簭涓紝鎴戝埄鐢ㄤ簡鍏ㄥ眬鍙橀噺ThreadData鏉ヨ繘琛岀嚎紼嬮棿鐨勫悓姝ワ紝褰撳瓙綰跨▼緇撴潫鏃舵敼鍙樿鍊鹼紝鑰岀埗綰跨▼鍒欏驚鐜垽鏂鍊兼潵紜瀛愮嚎紼嬫槸鍚﹀凡緇忕粨鏉燂紝褰撳瓙綰跨▼緇撴潫鏃訛紝鐖剁嚎紼嬫墠緇х畫榪涜涓嬮潰鐨勬搷浣溿?br>
涓寸晫鍖猴紙Critical Section錛?/strong>

淇濊瘉鍦ㄦ煇涓鏃跺埢鍙湁涓涓嚎紼嬭兘璁塊棶鏁版嵁鐨勭畝渚垮姙娉曘傚湪浠繪剰鏃跺埢鍙厑璁鎬竴涓嚎紼嬪鍏變韓璧勬簮榪涜璁塊棶銆傚鏋滄湁澶氫釜綰跨▼璇曞浘鍚屾椂璁塊棶涓寸晫鍖猴紝閭d箞鍦ㄦ湁涓涓嚎紼嬭繘鍏ュ悗鍏朵粬鎵鏈夎瘯鍥捐闂涓寸晫鍖虹殑綰跨▼灝嗚鎸傝搗錛屽茍涓鐩存寔緇埌榪涘叆涓寸晫鍖虹殑綰跨▼紱誨紑銆備復(fù)鐣屽尯鍦ㄨ閲婃斁鍚庯紝鍏朵粬綰跨▼鍙互緇х畫鎶㈠崰錛屽茍浠ユ杈懼埌鐢ㄥ師瀛愭柟寮忔搷浣滃叡浜祫婧愮殑鐩殑銆?

涓寸晫鍖哄寘鍚袱涓搷浣滃師璇細(xì)
 EnterCriticalSection錛堬級 榪涘叆涓寸晫鍖?
 LeaveCriticalSection錛堬級 紱誨紑涓寸晫鍖?

EnterCriticalSection錛堬級璇彞鎵ц鍚庝唬鐮佸皢榪涘叆涓寸晫鍖轟互鍚庢棤璁哄彂鐢熶粈涔堬紝蹇呴』紜繚涓庝箣鍖歸厤鐨凩eaveCriticalSection錛堬級閮借兘澶熻鎵ц鍒般傚惁鍒欎復(fù)鐣屽尯淇濇姢鐨勫叡浜祫婧愬皢姘歌繙涓嶄細(xì)琚噴鏀俱傝櫧鐒朵復(fù)鐣屽尯鍚屾閫熷害寰堝揩錛屼絾鍗村彧鑳界敤鏉ュ悓姝ユ湰榪涚▼鍐呯殑綰跨▼錛岃屼笉鍙敤鏉ュ悓姝ュ涓繘紼嬩腑鐨勭嚎紼嬨?


浜嬩歡錛圗vent錛?/strong>
  
浜嬩歡瀵硅薄涔熷彲浠ラ氳繃閫氱煡鎿嶄綔鐨勬柟寮忔潵淇濇寔綰跨▼鐨勫悓姝ャ傚茍涓斿彲浠ュ疄鐜頒笉鍚岃繘紼嬩腑鐨勭嚎紼嬪悓姝ユ搷浣溿?

淇″彿閲忓寘鍚殑鍑犱釜鎿嶄綔鍘熻錛?
  銆銆CreateEvent錛堬級    鍒涘緩涓涓俊鍙烽噺
  銆銆OpenEvent錛堬級    鎵撳紑涓涓簨浠?
  銆銆SetEvent錛堬級    鍥炵疆浜嬩歡
  銆銆WaitForSingleObject錛堬級   絳夊緟涓涓簨浠?
  銆銆WaitForMultipleObjects錛堬級銆 絳夊緟澶氫釜浜嬩歡

WaitForMultipleObjects 鍑芥暟鍘熷瀷錛?
  銆銆WaitForMultipleObjects錛?
  銆銆IN DWORD nCount, // 絳夊緟鍙ユ焺鏁?
  銆銆IN CONST HANDLE *lpHandles, //鎸囧悜鍙ユ焺鏁扮粍
  銆銆IN BOOL bWaitAll, //鏄惁瀹屽叏絳夊緟鏍囧織
  銆銆IN DWORD dwMilliseconds //絳夊緟鏃墮棿
  銆銆錛?
 
鍙傛暟nCount鎸囧畾浜嗚絳夊緟鐨勫唴鏍稿璞$殑鏁扮洰錛屽瓨鏀捐繖浜涘唴鏍稿璞$殑鏁扮粍鐢眑pHandles鏉ユ寚鍚戙俧WaitAll瀵規(guī)寚瀹氱殑榪檔Count涓唴鏍稿璞$殑涓ょ絳夊緟鏂瑰紡榪涜浜嗘寚瀹氾紝涓篢RUE鏃跺綋鎵鏈夊璞¢兘琚氱煡鏃跺嚱鏁版墠浼?xì)杩斿洖锛屼负FALSE鍒欏彧瑕佸叾涓換浣曚竴涓緱鍒伴氱煡灝卞彲浠ヨ繑鍥炪俤wMilliseconds鍦ㄨ繖閲岀殑浣滅敤涓庡湪WaitForSingleObject錛堬級涓殑浣滅敤鏄畬鍏ㄤ竴鑷寸殑銆傚鏋滅瓑寰呰秴鏃訛紝鍑芥暟灝嗚繑鍥濿AIT_TIMEOUT銆?nbsp;
  
浜嬩歡鍙互瀹炵幇涓嶅悓榪涚▼涓殑綰跨▼鍚屾鎿嶄綔錛屽茍涓斿彲浠ユ柟渚跨殑瀹炵幇澶氫釜綰跨▼鐨勪紭鍏堟瘮杈冪瓑寰呮搷浣滐紝渚嬪鍐欏涓猈aitForSingleObject鏉ヤ唬鏇縒aitForMultipleObjects浠庤屼嬌緙栫▼鏇村姞鐏墊椿銆?nbsp;
  
浜掓枼閲忥紙Mutex錛?/strong>
  
浜掓枼閲忚窡涓寸晫鍖哄緢鐩鎬技錛屽彧鏈夋嫢鏈変簰鏂ュ璞$殑綰跨▼鎵嶅叿鏈夎闂祫婧愮殑鏉冮檺錛岀敱浜庝簰鏂ュ璞″彧鏈変竴涓紝鍥犳灝卞喅瀹氫簡浠諱綍鎯呭喌涓嬫鍏變韓璧勬簮閮戒笉浼?xì)鍚屾椂琚涓U跨▼鎵璁塊棶銆傚綋鍓嶅崰鎹祫婧愮殑綰跨▼鍦ㄤ換鍔″鐞嗗畬鍚庡簲灝嗘嫢鏈夌殑浜掓枼瀵硅薄浜ゅ嚭錛屼互渚垮叾浠栫嚎紼嬪湪鑾峰緱鍚庡緱浠ヨ闂祫婧愩備簰鏂ラ噺姣斾復(fù)鐣屽尯澶嶆潅銆傚洜涓轟嬌鐢ㄤ簰鏂ヤ笉浠呬粎鑳藉鍦ㄥ悓涓搴旂敤紼嬪簭涓嶅悓綰跨▼涓疄鐜拌祫婧愮殑瀹夊叏鍏變韓錛岃屼笖鍙互鍦ㄤ笉鍚屽簲鐢ㄧ▼搴忕殑綰跨▼涔嬮棿瀹炵幇瀵硅祫婧愮殑瀹夊叏鍏變韓銆?
  
  銆銆浜掓枼閲忓寘鍚殑鍑犱釜鎿嶄綔鍘熻錛?
  銆銆CreateMutex錛堬級    鍒涘緩涓涓簰鏂ラ噺
  銆銆OpenMutex錛堬級    鎵撳紑涓涓簰鏂ラ噺
  銆銆ReleaseMutex錛堬級    閲婃斁浜掓枼閲?
  銆銆WaitForMultipleObjects錛堬級 絳夊緟浜掓枼閲忓璞?nbsp;
   
淇″彿閲忥紙Semaphores錛?/strong>

淇″彿閲忓璞″綰跨▼鐨勫悓姝ユ柟寮忎笌鍓嶉潰鍑犵鏂規(guī)硶涓嶅悓錛屼俊鍙峰厑璁稿涓嚎紼嬪悓鏃朵嬌鐢ㄥ叡浜祫婧愶紝榪欎笌鎿嶄綔緋葷粺涓殑PV鎿嶄綔鐩稿悓銆傚畠鎸囧嚭浜嗗悓鏃惰闂叡浜祫婧愮殑綰跨▼鏈澶ф暟鐩傚畠鍏佽澶氫釜綰跨▼鍦ㄥ悓涓鏃跺埢璁塊棶鍚屼竴璧勬簮錛屼絾鏄渶瑕侀檺鍒跺湪鍚屼竴鏃跺埢璁塊棶姝よ祫婧愮殑鏈澶х嚎紼嬫暟鐩傚湪鐢–reateSemaphore錛堬級鍒涘緩淇″彿閲忔椂鍗寵鍚屾椂鎸囧嚭鍏佽鐨勬渶澶ц祫婧愯鏁板拰褰撳墠鍙敤璧勬簮璁℃暟銆備竴鑸槸灝嗗綋鍓嶅彲鐢ㄨ祫婧愯鏁拌緗負(fù)鏈澶ц祫婧愯鏁幫紝姣忓鍔犱竴涓嚎紼嬪鍏變韓璧勬簮鐨勮闂紝褰撳墠鍙敤璧勬簮璁℃暟灝變細(xì)鍑?錛屽彧瑕佸綋鍓嶅彲鐢ㄨ祫婧愯鏁版槸澶т簬0鐨勶紝灝卞彲浠ュ彂鍑轟俊鍙烽噺淇″彿銆備絾鏄綋鍓嶅彲鐢ㄨ鏁板噺灝忓埌0鏃跺垯璇存槑褰撳墠鍗犵敤璧勬簮鐨勭嚎紼嬫暟宸茬粡杈懼埌浜嗘墍鍏佽鐨勬渶澶ф暟鐩紝涓嶈兘鍦ㄥ厑璁稿叾浠栫嚎紼嬬殑榪涘叆錛屾鏃剁殑淇″彿閲忎俊鍙峰皢鏃犳硶鍙戝嚭銆傜嚎紼嬪湪澶勭悊瀹屽叡浜祫婧愬悗錛屽簲鍦ㄧ寮鐨勫悓鏃墮氳繃ReleaseSemaphore錛堬級鍑芥暟灝嗗綋鍓嶅彲鐢ㄨ祫婧愯鏁板姞1銆傚湪浠諱綍鏃跺欏綋鍓嶅彲鐢ㄨ祫婧愯鏁板喅涓嶅彲鑳藉ぇ浜庢渶澶ц祫婧愯鏁般?

PV鎿嶄綔鍙婁俊鍙烽噺鐨勬蹇甸兘鏄敱鑽峰叞縐戝瀹禘.W.Dijkstra鎻愬嚭鐨勩備俊鍙烽噺S鏄竴涓暣鏁幫紝S澶т簬絳変簬闆舵椂浠h〃鍙緵騫跺彂榪涚▼浣跨敤鐨勮祫婧愬疄浣撴暟錛屼絾S灝忎簬闆舵椂鍒欒〃紺烘鍦ㄧ瓑寰呬嬌鐢ㄥ叡浜祫婧愮殑榪涚▼鏁般?

 P鎿嶄綔鐢寵璧勬簮錛?
  銆銆錛?錛塖鍑?錛?
  銆銆錛?錛夎嫢S鍑?鍚庝粛澶т簬絳変簬闆訛紝鍒欒繘紼嬬戶緇墽琛岋紱
  銆銆錛?錛夎嫢S鍑?鍚庡皬浜庨浂錛屽垯璇ヨ繘紼嬭闃誨鍚庤繘鍏ヤ笌璇ヤ俊鍙風(fēng)浉瀵瑰簲鐨勯槦鍒椾腑錛岀劧鍚庤漿鍏ヨ繘紼嬭皟搴︺?

 V鎿嶄綔閲婃斁璧勬簮錛?
  銆銆錛?錛塖鍔?錛?
  銆銆錛?錛夎嫢鐩稿姞緇撴灉澶т簬闆訛紝鍒欒繘紼嬬戶緇墽琛岋紱
  銆銆錛?錛夎嫢鐩稿姞緇撴灉灝忎簬絳変簬闆訛紝鍒欎粠璇ヤ俊鍙風(fēng)殑絳夊緟闃熷垪涓敜閱掍竴涓瓑寰呰繘紼嬶紝鐒跺悗鍐嶈繑鍥炲師榪涚▼緇х畫鎵ц鎴栬漿鍏ヨ繘紼嬭皟搴︺?
  
  銆銆淇″彿閲忓寘鍚殑鍑犱釜鎿嶄綔鍘熻錛?
  銆銆CreateSemaphore錛堬級  鍒涘緩涓涓俊鍙烽噺
  銆銆OpenSemaphore錛堬級  鎵撳紑涓涓俊鍙烽噺
  銆銆ReleaseSemaphore錛堬級  閲婃斁淇″彿閲?
  銆銆WaitForSingleObject錛堬級  絳夊緟淇″彿閲?nbsp;
   

淇″彿閲忕殑浣跨敤鐗圭偣浣垮叾鏇撮傜敤浜庡Socket錛堝鎺ュ瓧錛夌▼搴忎腑綰跨▼鐨勫悓姝ャ備緥濡傦紝緗戠粶涓婄殑HTTP鏈嶅姟鍣ㄨ瀵瑰悓涓鏃墮棿鍐呰闂悓涓欏甸潰鐨勭敤鎴鋒暟鍔犱互闄愬埗錛岃繖鏃跺彲浠ヤ負(fù)姣忎竴涓敤鎴峰鏈嶅姟鍣ㄧ殑欏甸潰璇鋒眰璁劇疆涓涓嚎紼嬶紝鑰岄〉闈㈠垯鏄緟淇濇姢鐨勫叡浜祫婧愶紝閫氳繃浣跨敤淇″彿閲忓綰跨▼鐨勫悓姝ヤ綔鐢ㄥ彲浠ョ‘淇濆湪浠諱竴鏃跺埢鏃犺鏈夊灝戠敤鎴峰鏌愪竴欏甸潰榪涜璁塊棶錛屽彧鏈変笉澶т簬璁懼畾鐨勬渶澶х敤鎴鋒暟鐩殑綰跨▼鑳藉榪涜璁塊棶錛岃屽叾浠栫殑璁塊棶浼佸浘鍒欒鎸傝搗錛屽彧鏈夊湪鏈夌敤鎴烽鍑哄姝ら〉闈㈢殑璁塊棶鍚庢墠鏈夊彲鑳借繘鍏ャ?nbsp;
 
鍥犱負(fù)瀹冧滑鐨勪嬌鐢ㄦ柟娉曢兘寰堢被浼鹼紝涓嬮潰鎴戠粨鍚堣搗鏉ョ粰鍑轟竴涓畝鍗曠殑紺轟緥錛?/p>

#include "stdafx.h"
#include 
"windows.h"
#include 
"stdio.h"

volatile int ThreadData = 1;

CRITICAL_SECTION csPrint; 
// 涓寸晫鍖?br>//HANDLE evtPrint; // 浜嬩歡淇″彿,鏍囪浜嬩歡鏄惁宸插彂鐢?br>//HANDLE mtxPrint; // 浜掓枼淇″彿,濡傛湁淇″彿琛ㄦ槑宸茬粡鏈夌嚎紼嬭繘鍏ヤ復(fù)鐣屽尯騫舵嫢鏈夋淇″彿
//HANDLE smphPrint; // 淇″彿閲?琛ㄧず鏄惁宸茬粡杈懼埌鍏佽鐨勬渶澶х嚎紼嬫暟

void Print(char *str)
{
    EnterCriticalSection(
&csPrint); // 榪涘叆涓寸晫鍖?br>    //WaitForSingleObject(evtPrint, INFINITE); // 絳夊緟浜嬩歡鏈変俊鍙?br>    //WaitForSingleObject(mtxPrint, INFINITE); // 絳夊緟浜掓枼閲忕┖緗紙娌℃湁綰跨▼鎷ユ湁瀹冿級
    
//WaitForSingleObject(smphPrint, INFINITE); // 絳夊緟瀵瑰叡浜祫婧愯姹傝閫氳繃 絳変簬 P鎿嶄綔 

    
for (;*str != '\0';str++)
    
{
        Sleep(
50);
        printf(
"%c",*str);
    }

    printf(
"\n");

    LeaveCriticalSection(
&csPrint); // 閫鍑轟復(fù)鐣屽尯
    
//SetEvent(evtPrint); // 鎶婁簨浠朵俊鍙烽噺鎭㈠,鍙樹負(fù)鏈変俊鍙?br>    //ReleaseMutex(mtxPrint); // 閲婃斁瀵逛簰鏂ラ噺鐨勫崰鏈?br>    //ReleaseSemaphore(smphPrint, 1, NULL); // 閲婃斁鍏變韓璧勬簮 絳変簬 V鎿嶄綔 

}


void ThreadProcess()
{
    
for(int i=0; i<6; i++)
    
{
        Sleep(
1000);
        Print(
"Sub  Thread is running!");
    }

    ThreadData 
= 0;

}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThread;
    DWORD ThreadID;

    InitializeCriticalSection(
&csPrint); // 鍒濆鍖栦復(fù)鐣屽尯
    
//evtPrint = CreateEvent(NULL, FALSE, TRUE, L"PrintEvent"); // 鍒濆鍖栦簨浠?br>    //mtxPrint = CreateMutex(NULL, FALSE, L"PrintMutex"); // 鍒濆鍖栦簰鏂ラ噺
    
//smphPrint= CreateSemaphore(NULL, 1, 1, L"PrintSemaphore"); // 璁劇疆淇″彿閲?涓祫婧?鍥犳鍚屾椂鍙彲浠ユ湁涓涓嚎紼嬭闂?nbsp;

    hThread
=CreateThread(NULL,
        
0,
        (LPTHREAD_START_ROUTINE)ThreadProcess,
        NULL,
        
0,
        
&ThreadID);

    
while (ThreadData)
    
{
        Print(
"Main Thread is waiting for Sub Thread!");
        Sleep(
600);
    }


    printf(
"Main Thread Finished!");
    system(
"pause");
    
return 0;
}


   緇間笂鎵榪幫細(xì)褰撳湪鍚屼竴榪涚▼涓殑澶氱嚎紼嬪悓姝ユ椂錛屼復(fù)鐣屽尯鏄晥鐜囨渶鏈楂橈紝鍩烘湰涓嶉渶瑕佷粈涔堝紑閿銆傝屽唴鏍稿璞$敱浜庤榪涜鐢ㄦ埛鎬佸拰鍐呮牳鎬佺殑鍒囨崲錛屽紑閿杈冨ぇ錛屼絾鏄唴鏍稿璞$敱浜庡彲浠ュ懡鍚嶏紝鍥犳瀹冧滑鍚屾椂鍙互鐢ㄤ簬榪涚▼闂寸殑鍚屾銆傚彟澶栵紝鍊煎緱涓鎻愮殑鏄紝淇″彿閲忓彲浠ヨ緗厑璁歌闂祫婧愮殑綰跨▼鎴栬繘紼嬩釜鏁幫紝鑰屼笉浠呬粎鏄彧鍏佽鍗曚釜綰跨▼鎴栬繘紼嬭闂祫婧愩?/p>

Saga 2009-07-24 15:14 鍙戣〃璇勮
]]>
澶氱嚎紼嬩腑灞閮ㄩ潤鎬佸彉閲忓垵濮嬪寲鐨勯櫡闃?/title><link>http://www.shnenglu.com/suiaiguo/archive/2009/07/24/91003.html</link><dc:creator>Saga</dc:creator><author>Saga</author><pubDate>Fri, 24 Jul 2009 02:47:00 GMT</pubDate><guid>http://www.shnenglu.com/suiaiguo/archive/2009/07/24/91003.html</guid><wfw:comment>http://www.shnenglu.com/suiaiguo/comments/91003.html</wfw:comment><comments>http://www.shnenglu.com/suiaiguo/archive/2009/07/24/91003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/suiaiguo/comments/commentRss/91003.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/suiaiguo/services/trackbacks/91003.html</trackback:ping><description><![CDATA[<p>    C++褰撲腑甯稿父闇瑕佷竴涓叏灞鍞竴鐨勫璞″疄渚嬶紝榪欐椂鍊欙紝鎴戜滑灝變細(xì)鎯沖埌鍗曚歡妯″紡銆傚浣曞疄鐜拌繖涓妯″紡錛熷叏灞鍙橀噺褰撶劧鏄竴涓畝鍗曞彲琛岀殑鏂規(guī)硶錛岀劧鑰岋紝榪欏お涓戦檵銆傚棷錛屽叾瀹烇紝涓戦檵鍊掍篃緗簡錛屾渶涓ラ噸鐨勬槸瀹冨皢寮曡紼嬪簭鍛樻互鐢ㄥ叏灞鍙橀噺錛岃繖灝嗗鑷寸淮鎶ょ殑鐏鵑毦銆?/p> <p>    鏃㈢劧鍏ㄥ眬鍙橀噺鏄彲鑳芥湁瀹崇殑錛岄偅涔堬紝鎴戜滑鎴戜滑鎶婂畠闅愯棌涓涓嬶紝鏀懼埌鏌愪釜綾誨綋涓幓錛屼綔涓虹被鐨勯潤鎬佹暟鎹垚鍛樸傝繖鐪嬩笂鍘諱笉閿欙紝鎴戜篃榪欎箞璁や負(fù)銆傚綋鎴戜滑鍙槸綆鍗曠殑闇瑕佷竴涓叏灞瀵硅薄鏃訛紝榪欏緢濂斤紝鑰屼笖瓚沖綆鍗曘備笉榪囷紝澶╃┖涓皻鏈変竴鏈靛皬灝忕殑涔屼簯錛岃鎴戜滑鏉ョ湅涓鐪嬪畠鏄粈涔堛?/p> <p>    闈欐佹垚鍛樺彉閲忕殑鍒濆鍖栵紝鍜屽叏灞瀵硅薄涓鏍鳳紝瀹為檯涓婃槸鍦╩ain鍑芥暟榪涘叆鍚庯紝鎴戜滑鍐欎笅鐨勭涓琛屼唬鐮佷箣鍓嶈鎵ц鐨勩傝屼笖錛屾垜浠煡閬撻偅涓憲鍚嶇殑鍒濆鍖栭『搴忎笉鍙潬鐨勯棶棰橈紙璺ㄧ紪璇戝崟鍏冿級銆傚綋鎴戠殑鍏ㄥ眬瀵硅薄鏄竴涓鏉傚璞♀曗曡繖寰堝父瑙侊紝姣斿涓涓幆澧冪鐞嗗櫒鈥曗曞畠鐢氳嚦榪橀渶瑕佸鏉傜殑瑁呴厤榪囩▼錛屾垜浠渶瑕佽冭檻錛氭瀯寤鴻繖涓崟浠剁殑鏃跺欙紝鍏跺璞¢兘鍑嗗濂戒簡鍚楋紵濡傛灉鎴戜滑涓嶈兘紜畾錛岄偅涔堜竴涓父瑙佺殑鎺柦鏄歡榪熷崟浠跺璞$殑鏋勯犫曗曟妸瀹冨歡榪熷埌鍏ㄥ眬瀵硅薄鍒濆鍖栫粨鏉熶互鍚庢庝箞鏍鳳紵榪欏ソ鍍忓緢瀹規(guī)槗瀹炵幇錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_34_76_Open_Image onclick="this.style.display='none'; Codehighlighter1_34_76_Open_Text.style.display='none'; Codehighlighter1_34_76_Closed_Image.style.display='inline'; Codehighlighter1_34_76_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_34_76_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_34_76_Closed_Text.style.display='none'; Codehighlighter1_34_76_Open_Image.style.display='inline'; Codehighlighter1_34_76_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">SomeClass </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> SomeClass ::instance()</span><span id=Codehighlighter1_34_76_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_34_76_Open_Text><span style="COLOR: #000000">{ <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> SomeClass inst;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">inst;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <p>涓嶉敊鍚э紵瀹冧笉浣嗗彲浠ュ歡榪熷埌鍏ㄥ眬瀵硅薄鍒濆鍖栦箣鍚庯紝鐢氳嚦鍙互寤惰繜鍒版湁浜洪渶瑕佸畠鐨勬椂鍊欙紝鎵嶈鏋勯犲嚭鏉ワ紝闅忛渶搴斿彉錛屽懙鍛碉紝鏄笉鏄緢甯咃紵鍡紝榪樻湁涓鐐瑰皬闂錛屼笉浠呭瓨鍦ㄥ璞″垵濮嬪寲欏哄簭闂錛屾瀽鏋勪篃鍚屾牱瀛樺湪闂銆傚眬閮ㄩ潤鎬佸彉閲忕殑鏋愭瀯錛屽拰鍏ㄥ眬瀵硅薄涓鏍鳳紝鏄湪main鍑芥暟閫鍑哄墠榪涜鐨勶紝濡傛灉涔熻鑰冭檻欏哄簭闂鐨勮瘽...鏄笉鏄湁鐐歸夯鐑﹀憿錛?/p> <p>    榪囧害璁捐鏄竴縐嶇姜錛屾垜鏄笉鏄冭檻鐨勫お澶嶆潅浜嗭紵濡傛灉鍘嬫牴灝變笉闇瑕佽冭檻鏋愭瀯欏哄簭錛岃繖鏄笉鏄緢瀹岀編鐨勮В鍐蟲柟妗堬紵娌¢偅涔堢畝鍗曪紒闈炰絾涓嶅瀹岀編錛岃屼笖錛岃繖閲岄潰浠嶇劧瀛樺湪緙洪櫡錛氬綋鎴戜滑榪愯鍦ㄥ綰跨▼鐜鐨勬椂鍊欙紝闈欐佸彉閲忕殑鍒濆鍖栨潵瀹炵幇鍗曚歡錛屾槸涓嶅彲闈犵殑鈥曗曠洿鎺ョ殑璇達(dá)紝闈欐佸彉閲忔湁鍙兘鍒濆鍖栧嬈★紒鍦ㄤ綔瀹為獙涔嬪墠錛屾垜浠幇鍒嗘瀽涓涓嬮潤鎬佸眬閮ㄥ彉閲忕殑瀹炵幇鏂瑰紡錛屼笅闈㈡槸鍓嶉潰instance瀹炵幇鐨勪吉鐮侊細(xì)</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_17_63_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_63_Open_Text.style.display='none'; Codehighlighter1_17_63_Closed_Image.style.display='inline'; Codehighlighter1_17_63_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_17_63_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_63_Closed_Text.style.display='none'; Codehighlighter1_17_63_Open_Image.style.display='inline'; Codehighlighter1_17_63_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">initialized)</span><span id=Codehighlighter1_17_63_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_17_63_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> initialized </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">inst)SomeClass;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">inst;</span></div> <p>姣忎釜闈欐佸彉閲忛兘浼?xì)鎷ユ湁鑷忿q殑鍒濆鍖栦笌鍚︾殑鏍囧織錛岄潤鎬佸彉閲忓垵濮嬪寲騫朵笉鏄竴涓師瀛愭搷浣滐紝涔熸病鏈変負(fù)澶氱嚎紼嬭岃绔嬩簰鏂ュ尯錛圕++璇█鏈韓鏄病鏈夌嚎紼嬫蹇電殑錛夛紝鍥犳錛屾垜浠鎯沖疄鐜板綰跨▼涓嬬殑鍗曚歡寤惰繜鍒涘緩錛屽氨涓嶅緱涓嶈В鍐抽噸澶嶅垵濮嬪寲鐨勯棶棰樸傝嚦浜庡浣曞疄鐜幫紝瀹為檯涓婅繖鏂歸潰鐨勪唬鐮佸緢澶氫簡銆備竴涓樉鐒剁殑鏂規(guī)鏄绔嬩簰鏂ュ尯錛屼紶緇熺殑鍙屾嫻嬫妧鏈彲浠ユ湁鏁堣В鍐寵繖涓闂鈥曗曡嚦灝戠洰鍓嶇殑C++鏄繖鏍鳳紝鑷充簬鏈榪戝湪csdn鐪嬪埌鍦↗ava涓弻媯嫻嬪け鏁堢殑鏂囩珷錛屾垜璁や負(fù)搴旇鐢盝ava璇█璐熻矗銆?/p> <p>    鍏跺疄錛屽眬閮ㄩ潤鎬佸彉閲忓彲鑳藉嬈″垵濮嬪寲錛屽茍涓嶉毦鐞嗚В錛屽疄璺典笂錛屼篃寰堝皯鍑轟弗閲嶇殑闂鈥曗曞嚭闂鐨勬潯浠惰繕鏄尯鑻涘埢鐨勶細(xì)澶氱嚎紼嬶紝涓嶅彲澶氭鍒濆鍖栵紝鎭板ソ澶氫釜綰跨▼鍚屾椂璋冪敤錛屾伆濂藉湪if涔嬪悗鍙戠敓綰跨▼璋冨害銆傚緢灝戝嚭闂錛屼笉絳変簬涓嶅嚭闂錛岀壒鍒殑錛屽浜庡箍娉涗嬌鐢ㄧ殑搴旂敤紼嬪簭鏉ヨ錛屽嚭閿欐鐜囧氨涓嶆槸涓鐐圭偣浜嗐傚啓榪欑瘒涓滆タ鐨勫師鍥狅紝鏄粖澶╁湪鍏徃鐪嬪埌鐨勪竴孌典唬鐮侊紝浣滀簡鏍囪瘑絎︽浛鎹細(xì)</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_36_211_Open_Image onclick="this.style.display='none'; Codehighlighter1_36_211_Open_Text.style.display='none'; Codehighlighter1_36_211_Closed_Image.style.display='inline'; Codehighlighter1_36_211_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_36_211_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_211_Closed_Text.style.display='none'; Codehighlighter1_36_211_Open_Image.style.display='inline'; Codehighlighter1_36_211_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">SomeClass </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> SomeClass::GetInstance()</span><span id=Codehighlighter1_36_211_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_36_211_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> CLock g_lock;<br><img id=Codehighlighter1_85_188_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_188_Open_Text.style.display='none'; Codehighlighter1_85_188_Closed_Image.style.display='inline'; Codehighlighter1_85_188_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_85_188_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_188_Closed_Text.style.display='none'; Codehighlighter1_85_188_Open_Image.style.display='inline'; Codehighlighter1_85_188_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (m_pInstance </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> NULL)</span><span id=Codehighlighter1_85_188_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_85_188_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  g_lock.Lock();<br><img id=Codehighlighter1_130_166_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_166_Open_Text.style.display='none'; Codehighlighter1_130_166_Closed_Image.style.display='inline'; Codehighlighter1_130_166_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_130_166_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_166_Closed_Text.style.display='none'; Codehighlighter1_130_166_Open_Image.style.display='inline'; Codehighlighter1_130_166_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (m_pInstance </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> NULL)</span><span id=Codehighlighter1_130_166_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_130_166_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>   m_pInstance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SomeClass;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  g_lock.Unlock();<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top> }</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> m_pInstance;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <p>灝辮繖孌典唬鐮侊紝铏界劧鐭ラ亾鐢ㄥ弻媯嫻嬶紝涓斾笉璇碙ock/Unlock鍙互鏇村ソ鐨勫鐞嗭紝static CLock g_lock鏍規(guī)湰灝辨槸閿欒銆傞攣鏈韓鍙兘琚垵濮嬪寲澶氭錛岃薄榪欑璧勬簮綾誨瀷鐨勫璞★紝澶氭鏋勯犲嚑涔庤偗瀹氫細(xì)鍑洪敊鐨勩傝屽浜庡崟浠舵ā寮忕殑瀹炵幇錛屾垜璁や負(fù)錛屼竴鑸岃█錛孡oki:: SingletonHolder浼?xì)鏄竴涓ソ鐨勯夋嫨銆?/p> <p> </p> <p>鏈枃鍑哄錛?a >http://blog.csdn.net/wingfiring/archive/2005/10/09/498242.aspx</a></p> <img src ="http://www.shnenglu.com/suiaiguo/aggbug/91003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/suiaiguo/" target="_blank">Saga</a> 2009-07-24 10:47 <a href="http://www.shnenglu.com/suiaiguo/archive/2009/07/24/91003.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>澶氱嚎紼嬬紪紼嬫祬鏋愶紙2錛夆斺旂嚎紼嬮棿閫氫俊http://www.shnenglu.com/suiaiguo/archive/2009/07/23/90940.htmlSagaSagaThu, 23 Jul 2009 09:18:00 GMThttp://www.shnenglu.com/suiaiguo/archive/2009/07/23/90940.htmlhttp://www.shnenglu.com/suiaiguo/comments/90940.htmlhttp://www.shnenglu.com/suiaiguo/archive/2009/07/23/90940.html#Feedback0http://www.shnenglu.com/suiaiguo/comments/commentRss/90940.htmlhttp://www.shnenglu.com/suiaiguo/services/trackbacks/90940.html   涓婃枃鎴戜滑浠嬬粛浜嗗浣曞緩绔嬩竴涓畝鍗曠殑澶氱嚎紼嬬▼搴忥紝澶氱嚎紼嬩箣闂翠笉鍙伩鍏嶇殑闇瑕佽繘琛岄氫俊銆傜浉姣斾簬榪涚▼闂撮氫俊鏉ヨ錛岀嚎紼嬮棿閫氫俊鏃犵枒鏄浉瀵規(guī)瘮杈冪畝鍗曠殑銆?/p>

   棣栧厛鎴戜滑鏉ョ湅鐪嬫渶綆鍗曠殑鏂規(guī)硶錛岄偅灝辨槸浣跨敤鍏ㄥ眬鍙橀噺錛堥潤鎬佸彉閲忎篃鍙互錛夋潵榪涜閫氫俊錛岀敱浜庡睘浜庡悓涓涓繘紼嬬殑鍚勪釜綰跨▼鏄浜庡悓涓涓繘紼嬬┖闂翠腑鐨勶紝騫朵笖瀹冧滑鍏變韓榪欎釜榪涚▼鐨勫悇縐嶈祫婧愶紝鍥犳瀹冧滑閮藉彲浠ユ鏃犻殰紕嶇殑璁塊棶榪欎釜榪涚▼涓殑鍏ㄥ眬鍙橀噺銆傚綋闇瑕佹湁澶氫釜綰跨▼鏉ヨ闂竴涓叏灞鍙橀噺鏃訛紝閫氬父鎴戜滑浼?xì)鍦q欎釜鍏ㄥ眬鍙橀噺鍓嶅姞涓妚olatile澹版槑錛屾潵鍛婅瘔緙栬瘧鍣ㄨ繖涓叏灞鍙橀噺鏄槗鍙樼殑錛岃緙栬瘧鍣ㄤ笉瑕佸榪欎釜鍙橀噺榪涜浼樺寲錛堣嚦浜庣紪璇戝櫒鍒板簳鏈夋病鏈夋寜鐓т綘鐨勮姹傛潵瀵箆olatile榪涜澶勭悊榪欎釜鏆備笖涓嶇悊錛夈?/p>

   涓嬮潰璐村嚭涓孌電畝鍗曠殑紺轟緥浠g爜錛?/p>

#include "stdafx.h"
#include 
"windows.h"
#include 
"stdio.h"

volatile int ThreadData = 0;

void ThreadProcess()
{
    
for(int i=0; i<6; i++)
    
{
        ThreadData 
+= 1000;
        Sleep(
1000);
        printf(
"Sub  Thread Tick %5d! %5d\n",(i+1)*1000, ThreadData);
    }

    printf(
"Exit Sub Thread!\n");
    
}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThread;
    DWORD ThreadID;
    hThread
=CreateThread(NULL,
                     
0,
                     (LPTHREAD_START_ROUTINE)ThreadProcess,
                     NULL,
                     
0,
                     
&ThreadID);
    
    
for(int i=0; i<10; i++)
    
{
        ThreadData 
-= 600;
        Sleep(
600);
        printf(
"Main Thread Tick %5d! %5d\n", (i+1)*600, ThreadData);
    }

    printf(
"Main Thread Loop Finished! \n");
    system(
"pause");
    
return 0;
}

   闄や簡鍏ㄥ眬鍙橀噺涔嬪錛岃繕鏈夊叾浠栫殑鏂規(guī)硶錛屾瘮濡傚埄鐢ㄦ秷鎭満鍒剁瓑鏉ュ疄鐜扮嚎紼嬮棿閫氫俊銆傝繖涓氨涓嶈緇嗚В閲婁簡錛屽叧浜庢秷鎭満鍒訛紝璇︽儏璇風(fēng)湅Windows娑堟伅鏈哄埗姒傝堪 銆?nbsp;

   涓嬮潰錛屽叧浜庡綰跨▼涓殑鍏ㄥ眬鍙橀噺錛屾垜鏉ヤ粙緇嶇偣鏈夌偣鍋忛鐨勪笢瑗匡細(xì)
綰跨▼灞閮ㄥ瓨鍌紙TLS錛?/strong>
    榪涚▼涓殑鍏ㄥ眬鍙橀噺涓庡嚱鏁板唴瀹氫箟鐨勯潤鎬?static)鍙橀噺錛屾槸鍚勪釜綰跨▼閮藉彲浠ヨ闂殑鍏變韓鍙橀噺銆傚湪涓涓嚎紼嬩慨鏀圭殑鍐呭瓨鍐呭錛屽鎵鏈夌嚎紼嬮兘鐢熸晥銆傝繖鏄竴涓紭鐐逛篃鏄竴涓己鐐廣傝瀹冩槸浼樼偣錛岀嚎紼嬬殑鏁版嵁浜ゆ崲鍙樺緱闈炲父蹇嵎銆傝瀹冩槸緙虹偣錛屼竴涓嚎紼嬫鎺変簡錛屽叾瀹冪嚎紼嬩篃鎬у懡涓嶄繚; 澶氫釜綰跨▼璁塊棶鍏變韓鏁版嵁錛岄渶瑕佹槀璐電殑鍚屾寮閿錛屼篃瀹規(guī)槗閫犳垚鍚屾鐩稿叧鐨凚UG銆?br>銆銆濡傛灉闇瑕佸湪涓涓嚎紼嬪唴閮ㄧ殑鍚勪釜鍑芥暟璋冪敤閮借兘璁塊棶銆佷絾鍏跺畠綰跨▼涓嶈兘璁塊棶鐨勫彉閲忥紙琚О涓簊tatic memory local to a thread 綰跨▼灞閮ㄩ潤鎬佸彉閲忥級錛屽氨闇瑕佹柊鐨勬満鍒舵潵瀹炵幇銆傝繖灝辨槸TLS銆?br>銆銆綰跨▼灞閮ㄥ瓨鍌ㄥ湪涓嶅悓鐨勫鉤鍙版湁涓嶅悓鐨勫疄鐜幫紝鍙Щ妞嶆т笉澶ソ銆傘
銆銆鏂規(guī)硶涓錛氭瘡涓嚎紼嬪垱寤烘椂緋葷粺緇欏畠鍒嗛厤涓涓狶PVOID鎸囬拡鐨勬暟緇勶紙鍙仛TLS鏁扮粍錛夛紝榪欎釜鏁扮粍浠嶤緙栫▼瑙掑害鏄殣钘忕潃鐨勪笉鑳界洿鎺ヨ闂紝闇瑕侀氳繃涓浜汣 API鍑芥暟璋冪敤璁塊棶銆傞鍏堝畾涔変竴浜汥WORD綰跨▼鍏ㄥ眬鍙橀噺鎴栧嚱鏁伴潤鎬佸彉閲?鍑嗗浣滀負(fù)鍚勪釜綰跨▼璁塊棶鑷繁鐨凾LS鏁扮粍鐨勭儲寮曞彉閲忋備竴涓嚎紼嬩嬌鐢═LS鏃訛紝絎竴姝ュ湪綰跨▼鍐呰皟鐢═lsAlloc()鍑芥暟錛屼負(fù)涓涓猅LS鏁扮粍绱㈠紩鍙橀噺涓庤繖涓嚎紼嬬殑TLS鏁扮粍鐨勬煇涓Ы(slot錛夊叧鑱旇搗鏉ワ紝渚嬪鑾峰緱涓涓儲寮曞彉閲忥細(xì)
銆銆global_dwTLSindex=TLSAlloc();
銆銆娉ㄦ剰錛屾姝ヤ箣鍚庯紝褰撳墠綰跨▼瀹為檯涓婅闂殑鏄繖涓猅LS鏁扮粍绱㈠紩鍙橀噺鐨勭嚎紼嬪唴鐨勬嫹璐濈増鏈備篃灝辮錛屼笉鍚岀嚎紼嬭櫧鐒剁湅璧鋒潵鐢ㄧ殑鏄悓鍚嶇殑TLS鏁扮粍绱㈠紩鍙橀噺錛屼絾瀹為檯涓婂悇涓嚎紼嬪緱鍒扮殑鍙兘鏄笉鍚孌WORD鍊箋傚叾鎰忎箟鍦ㄤ簬錛屾瘡涓嬌鐢═LS鐨勭嚎紼嬭幏寰椾簡涓涓狣WORD綾誨瀷鐨勭嚎紼嬪眬閮ㄩ潤鎬佸彉閲忎綔涓篢LS鏁扮粍鐨勭儲寮曞彉閲忋侰/C++鍘熸湰娌℃湁鐩存帴瀹氫箟綰跨▼灞閮ㄩ潤鎬佸彉閲忕殑鏈哄埗錛屾墍浠ュ湪濡傛澶ц垂鍛ㄦ姌銆?br>銆銆絎簩姝ワ紝涓哄綋鍓嶇嚎紼嬪姩鎬佸垎閰嶄竴鍧楀唴瀛樺尯鍩燂紙浣跨敤LocalAlloc()鍑芥暟璋冪敤錛夛紝鐒跺悗鎶婃寚鍚戣繖鍧楀唴瀛樺尯鍩熺殑鎸囬拡鏀懼叆TLS鏁扮粍鐩稿簲鐨勬Ы涓?浣跨敤TlsValue()鍑芥暟璋冪敤)銆?br>銆銆絎笁姝ワ紝鍦ㄥ綋鍓嶇嚎紼嬬殑浠諱綍鍑芥暟鍐咃紝閮藉彲浠ラ氳繃TLS鏁扮粍鐨勭儲寮曞彉閲忥紝浣跨敤TlsGetValue()鍑芥暟寰楀埌涓婁竴姝ョ殑閭e潡鍐呭瓨鍖哄煙鐨勬寚閽堬紝鐒跺悗灝卞彲浠ヨ繘琛屽唴瀛樺尯鍩熺殑璇誨啓鎿嶄綔浜嗐傝繖灝卞疄鐜頒簡鍦ㄤ竴涓嚎紼嬪唴閮ㄨ繖涓寖鍥村澶勫彲璁塊棶鐨勫彉閲忋?br>銆銆鏈鍚庯紝濡傛灉涓嶅啀闇瑕佷笂榪扮嚎紼嬪眬閮ㄩ潤鎬佸彉閲忥紝瑕佸姩鎬侀噴鏀炬帀榪欏潡鍐呭瓨鍖哄煙(浣跨敤LocalFree()鍑芥暟)錛岀劧鍚庝粠TLS鏁扮粍涓斁寮冨搴旂殑妲?浣跨敤TlsFree()鍑芥暟錛夈?br>銆銆鏂規(guī)硶浜岋細(xì)
銆銆鐩存帴澹版槑榪欎釜鍙橀噺鏄悇涓嚎紼嬫湁鑷繁鎷瘋礉鐨勭嚎紼嬪眬閮ㄩ潤鎬佸彉閲忥細(xì)
銆銆__declspec( thread ) int var_name;

Saga 2009-07-23 17:18 鍙戣〃璇勮
]]>
澶氱嚎紼嬬紪紼嬫祬鏋愶紙1錛夆斺旀榪?/title><link>http://www.shnenglu.com/suiaiguo/archive/2009/07/23/90904.html</link><dc:creator>Saga</dc:creator><author>Saga</author><pubDate>Thu, 23 Jul 2009 03:21:00 GMT</pubDate><guid>http://www.shnenglu.com/suiaiguo/archive/2009/07/23/90904.html</guid><wfw:comment>http://www.shnenglu.com/suiaiguo/comments/90904.html</wfw:comment><comments>http://www.shnenglu.com/suiaiguo/archive/2009/07/23/90904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/suiaiguo/comments/commentRss/90904.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/suiaiguo/services/trackbacks/90904.html</trackback:ping><description><![CDATA[<p>      綰跨▼錛屾槸鍦ㄨ繘紼嬪唴閮ㄥ張緇嗗垎鐨勪竴涓墽琛屽崟鍏冿紝浠栦滑閮芥槸鐢辨搷浣滅郴緇熸潵榪涜鍒掑垎鎺у埗鐨勩傜郴緇熷垱寤哄ソ榪涚▼鍚庯紝瀹為檯涓婂氨鍚姩鎵ц浜嗚榪涚▼鐨勪富鎵ц綰跨▼錛屼富鎵ц綰跨▼浠ュ嚱鏁板湴鍧褰㈠紡錛屾瘮濡傝main鎴朩inMain鍑芥暟錛屽皢紼嬪簭鐨勫惎鍔ㄧ偣鎻愪緵緇橶indows緋葷粺銆備富鎵ц綰跨▼緇堟浜嗭紝榪涚▼涔熷氨闅忎箣緇堟銆傛瘡涓涓繘紼嬭嚦灝戞湁涓涓富鎵ц綰跨▼錛屽畠鏃犻渶鐢辯敤鎴峰幓涓誨姩鍒涘緩錛屾槸鐢辯郴緇熻嚜鍔ㄥ垱寤虹殑銆傜敤鎴鋒牴鎹渶瑕佸湪搴旂敤紼嬪簭涓垱寤哄叾瀹冪嚎紼嬶紝澶氫釜綰跨▼騫跺彂鍦拌繍琛屼簬鍚屼竴涓繘紼嬩腑銆備竴涓繘紼嬩腑鐨勬墍鏈夌嚎紼嬮兘鍦ㄨ榪涚▼鐨勮櫄鎷熷湴鍧絀洪棿涓紝鍏卞悓浣跨敤榪欎簺铏氭嫙鍦板潃絀洪棿銆佸叏灞鍙橀噺鍜岀郴緇熻祫婧愶紝鎵浠ョ嚎紼嬮棿鐨勯氳闈炲父鏂逛究錛屽綰跨▼鎶鏈殑搴旂敤涔熻緝涓哄箍娉涖?br> <br> 鎴戜滑瑕佹搷浣滅嚎紼嬶紝灝卞繀欏諱緷璧栦簬鎿嶄綔緋葷粺鎻愪緵鐨勬帴鍙c備笅闈㈡垜浠潵綆瑕佷粙緇嶄竴涓嬫搷浣滅郴緇熸彁渚涚殑璺熺嚎紼嬬浉鍏崇殑API鍑芥暟錛?br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                 DWORD dwStackSize,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                 LPTHREAD_START_ROUTINE lpStartAddress,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                 LPVOID lpParameter,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                 DWORD dwCreationFlags,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                 LPDWORD lpThreadId);</span></div> <p>璇ュ嚱鏁板湪鍏惰皟鐢ㄨ繘紼嬬殑榪涚▼絀洪棿閲屽垱寤轟竴涓柊鐨勭嚎紼嬶紝騫惰繑鍥炲凡寤虹嚎紼嬬殑鍙ユ焺錛屽叾涓悇鍙傛暟璇存槑濡備笅錛?br>lpThreadAttributes錛氭寚鍚戜竴涓?SECURITY_ATTRIBUTES 緇撴瀯鐨勬寚閽堬紝璇ョ粨鏋勫喅瀹氫簡綰跨▼鐨勫畨鍏ㄥ睘鎬э紝涓鑸疆涓?NULL錛?<br>dwStackSize錛氭寚瀹氫簡綰跨▼鐨勫爢鏍堟繁搴︼紝涓鑸兘璁劇疆涓?錛?<br>lpStartAddress錛氳〃紺烘柊綰跨▼寮濮嬫墽琛屾椂浠g爜鎵鍦ㄥ嚱鏁扮殑鍦板潃錛屽嵆綰跨▼鐨勮搗濮嬪湴鍧銆備竴鑸儏鍐典負(fù)(LPTHREAD_START_ROUTINE)ThreadProcess錛孴hreadProcess 鏄嚎紼嬪嚱鏁板悕錛?<br>lpParameter錛氭寚瀹氫簡綰跨▼鎵ц鏃朵紶閫佺粰綰跨▼鐨?2浣嶅弬鏁幫紝鍗崇嚎紼嬪嚱鏁扮殑鍙傛暟錛?<br>dwCreationFlags錛氭帶鍒剁嚎紼嬪垱寤虹殑闄勫姞鏍囧織錛屽彲浠ュ彇涓ょ鍊箋傚鏋滆鍙傛暟涓?錛岀嚎紼嬪湪琚垱寤哄悗灝變細(xì)绔嬪嵆寮濮嬫墽琛岋紱濡傛灉璇ュ弬鏁頒負(fù)CREATE_SUSPENDED,鍒欑郴緇熶駭鐢熺嚎紼嬪悗錛岃綰跨▼澶勪簬鎸傝搗鐘舵侊紝騫朵笉椹笂鎵ц錛岀洿鑷沖嚱鏁癛esumeThread琚皟鐢紱 <br>lpThreadId錛氳鍙傛暟榪斿洖鎵鍒涘緩綰跨▼鐨処D錛?<br>濡傛灉鍒涘緩鎴愬姛鍒欒繑鍥炵嚎紼嬬殑鍙ユ焺錛屽惁鍒欒繑鍥濶ULL銆?</p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">DWORD SuspendThread(HANDLE hThread);</span></div> <p>璇ュ嚱鏁扮敤浜庢寕璧鋒寚瀹氱殑綰跨▼錛屽鏋滃嚱鏁版墽琛屾垚鍔燂紝鍒欑嚎紼嬬殑鎵ц琚粓姝€?/p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">DWORD ResumeThread(HANDLE hThread);</span></div> <p>璇ュ嚱鏁扮敤浜庣粨鏉熺嚎紼嬬殑鎸傝搗鐘舵侊紝鎵ц綰跨▼銆?/p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">VOID ExitThread(DWORD dwExitCode);</span></div> <p>璇ュ嚱鏁扮敤浜庣嚎紼嬬粓緇撹嚜韜殑鎵ц錛屼富瑕佸湪綰跨▼鐨勬墽琛屽嚱鏁頒腑琚皟鐢ㄣ傚叾涓弬鏁癲wExitCode鐢ㄦ潵璁劇疆綰跨▼鐨勯鍑虹爜銆?br> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);</span></div> <p>涓鑸儏鍐典笅錛岀嚎紼嬭繍琛岀粨鏉熶箣鍚庯紝綰跨▼鍑芥暟姝e父榪斿洖錛屼絾鏄簲鐢ㄧ▼搴忓彲浠ヨ皟鐢═erminateThread寮鴻緇堟鏌愪竴綰跨▼鐨勬墽琛屻傚悇鍙傛暟鍚箟濡備笅錛?br>hThread錛氬皢琚粓緇撶殑綰跨▼鐨勫彞鏌勶紱 <br>dwExitCode錛氱敤浜庢寚瀹氱嚎紼嬬殑閫鍑虹爜銆?<br>浣跨敤TerminateThread()緇堟鏌愪釜綰跨▼鐨勬墽琛屾槸涓嶅畨鍏ㄧ殑錛屽彲鑳戒細(xì)寮曡搗緋葷粺涓嶇ǔ瀹氾紱铏界劧璇ュ嚱鏁扮珛鍗崇粓姝㈢嚎紼嬬殑鎵ц錛屼絾騫朵笉閲婃斁綰跨▼鎵鍗犵敤鐨勮祫婧愩傚洜姝わ紝涓鑸笉寤鴻浣跨敤璇ュ嚱鏁般?<br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">BOOL PostThreadMessage(DWORD idThread,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>   UINT Msg,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>   WPARAM wParam,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>   LPARAM lParam);</span></div> <p>璇ュ嚱鏁板皢涓鏉℃秷鎭斁鍏ュ埌鎸囧畾綰跨▼鐨勬秷鎭槦鍒椾腑錛屽茍涓斾笉絳夊埌娑堟伅琚綰跨▼澶勭悊鏃朵究榪斿洖銆?br>idThread錛氬皢鎺ユ敹娑堟伅鐨勭嚎紼嬬殑ID錛?<br>Msg錛氭寚瀹氱敤鏉ュ彂閫佺殑娑堟伅錛?<br>wParam錛氬悓娑堟伅鏈夊叧鐨勫瓧鍙傛暟錛?<br>lParam錛氬悓娑堟伅鏈夊叧鐨勯暱鍙傛暟錛?<br>璋冪敤璇ュ嚱鏁版椂錛屽鏋滃嵆灝嗘帴鏀舵秷鎭殑綰跨▼娌℃湁鍒涘緩娑堟伅寰幆錛屽垯璇ュ嚱鏁版墽琛屽け璐ャ?font style="BACKGROUND-COLOR: #c7edcc"></font></p> <br>涓嬮潰鎴戠粰鍑轟竴涓畝鍗曠殑寤虹珛綰跨▼鐨勪緥瀛愶細(xì) <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ThreadProcess()<br><img id=Codehighlighter1_82_207_Open_Image onclick="this.style.display='none'; Codehighlighter1_82_207_Open_Text.style.display='none'; Codehighlighter1_82_207_Closed_Image.style.display='inline'; Codehighlighter1_82_207_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_82_207_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_82_207_Closed_Text.style.display='none'; Codehighlighter1_82_207_Open_Image.style.display='inline'; Codehighlighter1_82_207_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_82_207_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_82_207_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_109_171_Open_Image onclick="this.style.display='none'; Codehighlighter1_109_171_Open_Text.style.display='none'; Codehighlighter1_109_171_Closed_Image.style.display='inline'; Codehighlighter1_109_171_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_109_171_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_109_171_Closed_Text.style.display='none'; Codehighlighter1_109_171_Open_Image.style.display='inline'; Codehighlighter1_109_171_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_109_171_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_109_171_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        Sleep(</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sub Thread Tick %d! \n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Exit Sub Thread!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, _TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br><img id=Codehighlighter1_247_568_Open_Image onclick="this.style.display='none'; Codehighlighter1_247_568_Open_Text.style.display='none'; Codehighlighter1_247_568_Closed_Image.style.display='inline'; Codehighlighter1_247_568_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_247_568_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_247_568_Closed_Text.style.display='none'; Codehighlighter1_247_568_Open_Image.style.display='inline'; Codehighlighter1_247_568_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_247_568_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_247_568_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    HANDLE hThread;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    DWORD ThreadID;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    hThread</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">CreateThread(NULL,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                     </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                     (LPTHREAD_START_ROUTINE)ThreadProcess,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                     NULL,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                     </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                     </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">ThreadID);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_432_494_Open_Image onclick="this.style.display='none'; Codehighlighter1_432_494_Open_Text.style.display='none'; Codehighlighter1_432_494_Closed_Image.style.display='inline'; Codehighlighter1_432_494_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_432_494_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_432_494_Closed_Text.style.display='none'; Codehighlighter1_432_494_Open_Image.style.display='inline'; Codehighlighter1_432_494_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_432_494_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_432_494_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        Sleep(</span><span style="COLOR: #000000">600</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Main Thread Tick %d! \n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">600</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Main Thread Loop Finished! \n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <img src ="http://www.shnenglu.com/suiaiguo/aggbug/90904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/suiaiguo/" target="_blank">Saga</a> 2009-07-23 11:21 <a href="http://www.shnenglu.com/suiaiguo/archive/2009/07/23/90904.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Win32搴旂敤紼嬪簭涓繘紼嬮棿閫氫俊鏂規(guī)硶鍒嗘瀽涓庢瘮杈?/title><link>http://www.shnenglu.com/suiaiguo/archive/2009/07/21/90697.html</link><dc:creator>Saga</dc:creator><author>Saga</author><pubDate>Tue, 21 Jul 2009 02:32:00 GMT</pubDate><guid>http://www.shnenglu.com/suiaiguo/archive/2009/07/21/90697.html</guid><wfw:comment>http://www.shnenglu.com/suiaiguo/comments/90697.html</wfw:comment><comments>http://www.shnenglu.com/suiaiguo/archive/2009/07/21/90697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/suiaiguo/comments/commentRss/90697.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/suiaiguo/services/trackbacks/90697.html</trackback:ping><description><![CDATA[<p><strong>1</strong> <strong>榪涚▼涓庤繘紼嬮氫俊</strong></p> <p> <wbr></p> <p>銆銆榪涚▼鏄鍏ュ唴瀛樺茍鍑嗗鎵ц鐨勭▼搴忥紝姣忎釜榪涚▼閮芥湁縐佹湁鐨勮櫄鎷熷湴鍧絀洪棿錛岀敱浠g爜銆佹暟鎹互鍙婂畠鍙埄鐢ㄧ殑緋葷粺璧勬簮(濡傛枃浠躲佺閬撶瓑)緇勬垚銆傚榪涚▼/澶氱嚎紼嬫槸Windows鎿嶄綔緋葷粺鐨勪竴涓熀鏈壒寰併侻icrosoft Win32搴旂敤緙栫▼鎺ュ彛(Application Programming Interface, API)鎻愪緵浜嗗ぇ閲忔敮鎸佸簲鐢ㄧ▼搴忛棿鏁版嵁鍏變韓鍜屼氦鎹㈢殑鏈哄埗錛岃繖浜涙満鍒惰浣跨殑媧誨姩縐頒負(fù)榪涚▼闂撮氫俊(InterProcess Communication, IPC)錛岃繘紼嬮氫俊灝辨槸鎸囦笉鍚岃繘紼嬮棿榪涜鏁版嵁鍏變韓鍜屾暟鎹氦鎹€?br>銆銆姝e洜涓轟嬌鐢╓in32 API榪涜榪涚▼閫氫俊鏂瑰紡鏈夊縐嶏紝濡備綍閫夋嫨鎭板綋鐨勯氫俊鏂瑰紡灝辨垚涓哄簲鐢ㄥ紑鍙戜腑鐨勪竴涓噸瑕侀棶棰橈紝涓嬮潰鏈枃灝嗗Win32涓繘紼嬮氫俊鐨勫嚑縐嶆柟娉曞姞浠ュ垎鏋愬拰姣旇緝銆?/p> <p> <wbr></p> <p><strong>2</strong> <strong>榪涚▼閫氫俊鏂規(guī)硶</strong></p> <p><strong>2.1</strong> <strong>鏂囦歡鏄犲皠</strong><br>銆銆鏂囦歡鏄犲皠(Memory-Mapped Files)鑳戒嬌榪涚▼鎶婃枃浠跺唴瀹瑰綋浣滆繘紼嬪湴鍧鍖洪棿涓鍧楀唴瀛橀偅鏍鋒潵瀵瑰緟銆傚洜姝わ紝榪涚▼涓嶅繀浣跨敤鏂囦歡I/O鎿嶄綔錛屽彧闇綆鍗曠殑鎸囬拡鎿嶄綔灝卞彲璇誨彇鍜屼慨鏀規(guī)枃浠剁殑鍐呭銆?br>銆銆Win32 API鍏佽澶氫釜榪涚▼璁塊棶鍚屼竴鏂囦歡鏄犲皠瀵硅薄錛屽悇涓繘紼嬪湪瀹冭嚜宸辯殑鍦板潃絀洪棿閲屾帴鏀跺唴瀛樼殑鎸囬拡銆傞氳繃浣跨敤榪欎簺鎸囬拡錛屼笉鍚岃繘紼嬪氨鍙互璇繪垨淇敼鏂囦歡鐨勫唴瀹癸紝瀹炵幇浜嗗鏂囦歡涓暟鎹殑鍏變韓銆?br>銆銆搴旂敤紼嬪簭鏈変笁縐嶆柟娉曟潵浣垮涓繘紼嬪叡浜竴涓枃浠舵槧灝勫璞°?br>銆銆(1)緇ф壙錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝瀹冪殑瀛愯繘紼嬬戶鎵胯瀵硅薄鐨勫彞鏌勩?br>銆銆(2)鍛藉悕鏂囦歡鏄犲皠錛氱涓涓繘紼嬪湪寤虹珛鏂囦歡鏄犲皠瀵硅薄鏃跺彲浠ョ粰璇ュ璞℃寚瀹氫竴涓悕瀛?鍙笌鏂囦歡鍚嶄笉鍚?銆傜浜屼釜榪涚▼鍙氳繃榪欎釜鍚嶅瓧鎵撳紑姝ゆ枃浠舵槧灝勫璞°傚彟澶栵紝絎竴涓繘紼嬩篃鍙互閫氳繃涓浜涘叾瀹僆PC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂悕瀛椾紶緇欑浜屼釜榪涚▼銆?br>銆銆(3)鍙ユ焺澶嶅埗錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝鐒跺悗閫氳繃鍏跺畠IPC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂璞″彞鏌勪紶閫掔粰絎簩涓繘紼嬨傜浜屼釜榪涚▼澶嶅埗璇ュ彞鏌勫氨鍙栧緱瀵硅鏂囦歡鏄犲皠瀵硅薄鐨勮闂潈闄愩?br>銆銆鏂囦歡鏄犲皠鏄湪澶氫釜榪涚▼闂村叡浜暟鎹殑闈炲父鏈夋晥鏂規(guī)硶錛屾湁杈冨ソ鐨勫畨鍏ㄦс備絾鏂囦歡鏄犲皠鍙兘鐢ㄤ簬鏈湴鏈哄櫒鐨勮繘紼嬩箣闂達(dá)紝涓嶈兘鐢ㄤ簬緗戠粶涓紝鑰屽紑鍙戣呰繕蹇呴』鎺у埗榪涚▼闂寸殑鍚屾銆?br><strong>2.2</strong> <strong>鍏變韓鍐呭瓨</strong><br>銆銆Win32 API涓叡浜唴瀛?Shared Memory)瀹為檯灝辨槸鏂囦歡鏄犲皠鐨勪竴縐嶇壒孌婃儏鍐點傝繘紼嬪湪鍒涘緩鏂囦歡鏄犲皠瀵硅薄鏃剁敤0xFFFFFFFF鏉ヤ唬鏇挎枃浠跺彞鏌?HANDLE)錛屽氨琛ㄧず浜嗗搴旂殑鏂囦歡鏄犲皠瀵硅薄鏄粠鎿嶄綔緋葷粺欏甸潰鏂囦歡璁塊棶鍐呭瓨錛屽叾瀹冭繘紼嬫墦寮璇ユ枃浠舵槧灝勫璞″氨鍙互璁塊棶璇ュ唴瀛樺潡銆傜敱浜庡叡浜唴瀛樻槸鐢ㄦ枃浠舵槧灝勫疄鐜扮殑錛屾墍浠ュ畠涔熸湁杈冨ソ鐨勫畨鍏ㄦэ紝涔熷彧鑳借繍琛屼簬鍚屼竴璁$畻鏈轟笂鐨勮繘紼嬩箣闂淬?br><strong>2.3</strong> <strong>鍖垮悕綆¢亾</strong><br>銆銆綆¢亾(Pipe)鏄竴縐嶅叿鏈変袱涓鐐圭殑閫氫俊閫氶亾錛氭湁涓绔彞鏌勭殑榪涚▼鍙互鍜屾湁鍙︿竴绔彞鏌勭殑榪涚▼閫氫俊銆傜閬撳彲浠ユ槸鍗曞悜錛嶄竴绔槸鍙鐨勶紝鍙︿竴绔偣鏄彧鍐欑殑錛涗篃鍙互鏄弻鍚戠殑涓綆¢亾鐨勪袱绔偣鏃㈠彲璇諱篃鍙啓銆?br>銆銆鍖垮悕綆¢亾(Anonymous Pipe)鏄湪鐖惰繘紼嬪拰瀛愯繘紼嬩箣闂達(dá)紝鎴栧悓涓鐖惰繘紼嬬殑涓や釜瀛愯繘紼嬩箣闂翠紶杈撴暟鎹殑鏃犲悕瀛楃殑鍗曞悜綆¢亾銆傞氬父鐢辯埗榪涚▼鍒涘緩綆¢亾錛岀劧鍚庣敱瑕侀氫俊鐨勫瓙榪涚▼緇ф壙閫氶亾鐨勮绔偣鍙ユ焺鎴栧啓绔偣鍙ユ焺錛岀劧鍚庡疄鐜伴氫俊銆傜埗榪涚▼榪樺彲浠ュ緩绔嬩袱涓垨鏇村涓戶鎵垮尶鍚嶇閬撹鍜屽啓鍙ユ焺鐨勫瓙榪涚▼銆傝繖浜涘瓙榪涚▼鍙互浣跨敤綆¢亾鐩存帴閫氫俊錛屼笉闇瑕侀氳繃鐖惰繘紼嬨?br>銆銆鍖垮悕綆¢亾鏄崟鏈轟笂瀹炵幇瀛愯繘紼嬫爣鍑咺/O閲嶅畾鍚戠殑鏈夋晥鏂規(guī)硶錛屽畠涓嶈兘鍦ㄧ綉涓婁嬌鐢紝涔熶笉鑳界敤浜庝袱涓笉鐩稿叧鐨勮繘紼嬩箣闂淬?br><strong>2.4</strong> <strong>鍛藉悕綆¢亾</strong><br>銆銆鍛藉悕綆¢亾(Named Pipe)鏄湇鍔″櫒榪涚▼鍜屼竴涓垨澶氫釜瀹㈡埛榪涚▼涔嬮棿閫氫俊鐨勫崟鍚戞垨鍙屽悜綆¢亾銆備笉鍚屼簬鍖垮悕綆¢亾鐨勬槸鍛藉悕綆¢亾鍙互鍦ㄤ笉鐩稿叧鐨勮繘紼嬩箣闂村拰涓嶅悓璁$畻鏈轟箣闂翠嬌鐢紝鏈嶅姟鍣ㄥ緩绔嬪懡鍚嶇閬撴椂緇欏畠鎸囧畾涓涓悕瀛楋紝浠諱綍榪涚▼閮藉彲浠ラ氳繃璇ュ悕瀛楁墦寮綆¢亾鐨勫彟涓绔紝鏍規(guī)嵁緇欏畾鐨勬潈闄愬拰鏈嶅姟鍣ㄨ繘紼嬮氫俊銆?br>銆銆鍛藉悕綆¢亾鎻愪緵浜嗙浉瀵圭畝鍗曠殑緙栫▼鎺ュ彛錛屼嬌閫氳繃緗戠粶浼犺緭鏁版嵁騫朵笉姣斿悓涓璁$畻鏈轟笂涓よ繘紼嬩箣闂撮氫俊鏇村洶闅撅紝涓嶈繃濡傛灉瑕佸悓鏃跺拰澶氫釜榪涚▼閫氫俊瀹冨氨鍔涗笉浠庡績浜嗐?br><strong>2.5</strong> <strong>閭歡妲?/strong><br>銆銆閭歡妲?Mailslots)鎻愪緵榪涚▼闂村崟鍚戦氫俊鑳藉姏錛屼換浣曡繘紼嬮兘鑳藉緩绔嬮偖浠舵Ы鎴愪負(fù)閭歡妲芥湇鍔″櫒銆傚叾瀹冭繘紼嬶紝縐頒負(fù)閭歡妲藉鎴鳳紝鍙互閫氳繃閭歡妲界殑鍚嶅瓧緇欓偖浠舵Ы鏈嶅姟鍣ㄨ繘紼嬪彂閫佹秷鎭傝繘鏉ョ殑娑堟伅涓鐩存斁鍦ㄩ偖浠舵Ы涓紝鐩村埌鏈嶅姟鍣ㄨ繘紼嬭鍙栧畠涓烘銆備竴涓繘紼嬫棦鍙互鏄偖浠舵Ы鏈嶅姟鍣ㄤ篃鍙互鏄偖浠舵Ы瀹㈡埛錛屽洜姝ゅ彲寤虹珛澶氫釜閭歡妲藉疄鐜拌繘紼嬮棿鐨勫弻鍚戦氫俊銆?br>銆銆閫氳繃閭歡妲藉彲浠ョ粰鏈湴璁$畻鏈轟笂鐨勯偖浠舵Ы銆佸叾瀹冭綆楁満涓婄殑閭歡妲芥垨鎸囧畾緗戠粶鍖哄煙涓墍鏈夎綆楁満涓婃湁鍚屾牱鍚嶅瓧鐨勯偖浠舵Ы鍙戦佹秷鎭傚箍鎾氫俊鐨勬秷鎭暱搴︿笉鑳借秴榪?00瀛楄妭錛岄潪騫挎挱娑堟伅鐨勯暱搴﹀垯鍙楅偖浠舵Ы鏈嶅姟鍣ㄦ寚瀹氱殑鏈澶ф秷鎭暱搴︾殑闄愬埗銆?br>銆銆閭歡妲戒笌鍛藉悕綆¢亾鐩鎬技錛屼笉榪囧畠浼犺緭鏁版嵁鏄氳繃涓嶅彲闈犵殑鏁版嵁鎶?濡俆CP/IP鍗忚涓殑UDP鍖?瀹屾垚鐨勶紝涓鏃︾綉緇滃彂鐢熼敊璇垯鏃犳硶淇濊瘉娑堟伅姝g‘鍦版帴鏀訛紝鑰屽懡鍚嶇閬撲紶杈撴暟鎹垯鏄緩绔嬪湪鍙潬榪炴帴鍩虹涓婄殑銆備笉榪囬偖浠舵Ы鏈夌畝鍖栫殑緙栫▼鎺ュ彛鍜岀粰鎸囧畾緗戠粶鍖哄煙鍐呯殑鎵鏈夎綆楁満騫挎挱娑堟伅鐨勮兘鍔涳紝鎵浠ラ偖浠舵Ы涓嶅け涓哄簲鐢ㄧ▼搴忓彂閫佸拰鎺ユ敹娑堟伅鐨勫彟涓縐嶉夋嫨銆?br><strong>2.6</strong> <strong>鍓創(chuàng)鏉?/strong><br>銆銆鍓創(chuàng)鏉?Clipped Board)瀹炶川鏄疻in32 API涓竴緇勭敤鏉ヤ紶杈撴暟鎹殑鍑芥暟鍜屾秷鎭紝涓篧indows搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁鍏變韓鎻愪緵浜嗕竴涓腑浠嬶紝W(xué)indows宸插緩绔嬬殑鍓垏(澶嶅埗)錛嶇矘璐寸殑鏈哄埗涓轟笉鍚屽簲鐢ㄧ▼搴忎箣闂村叡浜笉鍚屾牸寮忔暟鎹彁渚涗簡涓鏉℃嵎寰勩傚綋鐢ㄦ埛鍦ㄥ簲鐢ㄧ▼搴忎腑鎵ц鍓垏鎴栧鍒舵搷浣滄椂錛屽簲鐢ㄧ▼搴忔妸閫夊彇鐨勬暟鎹敤涓縐嶆垨澶氱鏍煎紡鏀懼湪鍓創(chuàng)鏉夸笂銆傜劧鍚庝換浣曞叾瀹冨簲鐢ㄧ▼搴忛兘鍙互浠庡壀璐存澘涓婃嬀鍙栨暟鎹紝浠庣粰瀹氭牸寮忎腑閫夋嫨閫傚悎鑷繁鐨勬牸寮忋?br>銆銆鍓創(chuàng)鏉挎槸涓涓潪甯告澗鏁g殑浜ゆ崲濯掍粙錛屽彲浠ユ敮鎸佷換浣曟暟鎹牸寮忥紝姣忎竴鏍煎紡鐢變竴鏃犵鍙鋒暣鏁版爣璇嗭紝瀵規(guī)爣鍑?棰勫畾涔?鍓創(chuàng)鏉挎牸寮忥紝璇ュ兼槸Win32 API瀹氫箟鐨勫父閲忥紱瀵歸潪鏍囧噯鏍煎紡鍙互浣跨敤Register Clipboard Format鍑芥暟娉ㄥ唽涓烘柊鐨勫壀璐存澘鏍煎紡銆傚埄鐢ㄥ壀璐存澘榪涜浜ゆ崲鐨勬暟鎹彧闇鍦ㄦ暟鎹牸寮忎笂涓鑷存垨閮藉彲浠ヨ漿鍖栦負(fù)鏌愮鏍煎紡灝辮銆備絾鍓創(chuàng)鏉垮彧鑳藉湪鍩轟簬Windows鐨勭▼搴忎腑浣跨敤錛屼笉鑳藉湪緗戠粶涓婁嬌鐢ㄣ?br><strong>2.7</strong> <strong>鍔ㄦ佹暟鎹氦鎹?/strong><br>銆銆鍔ㄦ佹暟鎹氦鎹?DDE)鏄嬌鐢ㄥ叡浜唴瀛樺湪搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁浜ゆ崲鐨勪竴縐嶈繘紼嬮棿閫氫俊褰㈠紡銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢―DE榪涜涓嬈℃ф暟鎹紶杈擄紝涔熷彲浠ュ綋鍑虹幇鏂版暟鎹椂錛岄氳繃鍙戦佹洿鏂板煎湪搴旂敤紼嬪簭闂村姩鎬佷氦鎹㈡暟鎹?br>銆銆DDE鍜屽壀璐存澘涓鏍鋒棦鏀寔鏍囧噯鏁版嵁鏍煎紡(濡傛枃鏈佷綅鍥劇瓑)錛屽張鍙互鏀寔鑷繁瀹氫箟鐨勬暟鎹牸寮忋備絾瀹冧滑鐨勬暟鎹紶杈撴満鍒跺嵈涓嶅悓錛屼竴涓槑鏄懼尯鍒槸鍓創(chuàng)鏉挎搷浣滃嚑涔庢繪槸鐢ㄤ綔瀵圭敤鎴鋒寚瀹氭搷浣滅殑涓嬈℃у簲絳旓紞濡備粠鑿滃崟涓夋嫨Paste鍛戒護銆傚敖綆DE涔熷彲浠ョ敱鐢ㄦ埛鍚姩錛屼絾瀹冪戶緇彂鎸ヤ綔鐢ㄤ竴鑸笉蹇呯敤鎴瘋繘涓姝ュ共棰勩侱DE鏈変笁縐嶆暟鎹氦鎹㈡柟寮忥細(xì)<br>銆銆(1) 鍐烽摼錛氭暟鎹氦鎹㈡槸涓嬈℃ф暟鎹紶杈擄紝涓庡壀璐存澘鐩稿悓銆?br>銆銆(2) 娓╅摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒閫氱煡瀹㈡埛錛岀劧鍚庡鎴峰繀欏昏姹傛柊鐨勬暟鎹?br>銆銆(3) 鐑摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒鑷姩緇欏鎴峰彂閫佹暟鎹?br>銆銆DDE浜ゆ崲鍙互鍙戠敓鍦ㄥ崟鏈烘垨緗戠粶涓笉鍚岃綆楁満鐨勫簲鐢ㄧ▼搴忎箣闂淬傚紑鍙戣呰繕鍙互瀹氫箟瀹氬埗鐨凞DE鏁版嵁鏍煎紡榪涜搴旂敤紼嬪簭涔嬮棿鐗瑰埆鐩殑IPC錛屽畠浠湁鏇寸揣瀵嗚﹀悎鐨勯氫俊瑕佹眰銆傚ぇ澶氭暟鍩轟簬Windows鐨勫簲鐢ㄧ▼搴忛兘鏀寔DDE銆?br><strong>2.8</strong> <strong>瀵硅薄榪炴帴涓庡祵鍏?/strong><br>銆銆搴旂敤紼嬪簭鍒╃敤瀵硅薄榪炴帴涓庡祵鍏?OLE)鎶鏈鐞嗗鍚堟枃妗?鐢卞縐嶆暟鎹牸寮忕粍鎴愮殑鏂囨。)錛孫LE鎻愪緵浣挎煇搴旂敤紼嬪簭鏇村鏄撹皟鐢ㄥ叾瀹冨簲鐢ㄧ▼搴忚繘琛屾暟鎹紪杈戠殑鏈嶅姟銆備緥濡傦紝OLE鏀寔鐨勫瓧澶勭悊鍣ㄥ彲浠ュ祵濂楃數(shù)瀛愯〃鏍鹼紝褰撶敤鎴瘋緙栬緫鐢?shù)瀛愯〃鏍兼椂OLE搴撳彲鑷姩鍚姩鐢?shù)瀛愯〃鏍季~栬緫鍣ㄣ傚綋鐢ㄦ埛閫鍑虹數(shù)瀛愯〃鏍肩紪杈戝櫒鏃訛紝璇ヨ〃鏍煎凡鍦ㄥ師濮嬪瓧澶勭悊鍣ㄦ枃妗d腑寰楀埌鏇存柊銆傚湪榪欓噷鐢?shù)瀛愯〃鏍季~栬緫鍣ㄥ彉鎴愪簡瀛楀鐞嗗櫒鐨勬墿灞曪紝鑰屽鏋滀嬌鐢―DE錛岀敤鎴瘋鏄懼紡鍦板惎鍔ㄧ數(shù)瀛愯〃鏍肩紪杈戝櫒銆?br>銆銆鍚孌DE鎶鏈浉鍚岋紝澶у鏁板熀浜嶹indows鐨勫簲鐢ㄧ▼搴忛兘鏀寔OLE鎶鏈?br><strong>2.9</strong> <strong>鍔ㄦ佽繛鎺ュ簱</strong><br>銆銆Win32鍔ㄦ佽繛鎺ュ簱(DLL)涓殑鍏ㄥ眬鏁版嵁閫氳繃鐗規(guī)畩鏂規(guī)硶鍙互琚皟鐢―LL鐨勬墍鏈夎繘紼嬪叡浜紝榪欏氨鍙堢粰榪涚▼闂撮氫俊寮杈熶簡涓鏉℃柊鐨勯斿緞錛屽綋鐒惰闂椂瑕佹敞鎰忓悓姝ラ棶棰樸?br>銆銆铏界劧鍙互閫氳繃DLL榪涜榪涚▼闂存暟鎹叡浜紝浣嗕粠鏁版嵁瀹夊叏鐨勮搴﹁冭檻錛屾垜浠茍涓嶆彁鍊¤繖縐嶆柟娉曪紝浣跨敤甯︽湁璁塊棶鏉冮檺鎺у埗鐨勫叡浜唴瀛樼殑鏂規(guī)硶鏇村ソ涓浜涖?br><strong>2.10</strong> <strong>榪滅▼榪囩▼璋冪敤</strong><br>銆銆Win32 API鎻愪緵鐨勮繙紼嬭繃紼嬭皟鐢?RPC)浣垮簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢ㄨ繙紼嬭皟鐢ㄥ嚱鏁幫紝榪欎嬌鍦ㄧ綉緇滀笂鐢≧PC榪涜榪涚▼閫氫俊灝卞儚鍑芥暟璋冪敤閭f牱綆鍗曘俁PC鏃㈠彲浠ュ湪鍗曟満涓嶅悓榪涚▼闂翠嬌鐢ㄤ篃鍙互鍦ㄧ綉緇滀腑浣跨敤銆?br>銆銆鐢變簬Win32 API鎻愪緵鐨凴PC鏈嶄粠OSF-DCE(Open Software Foundation Distributed Computing Environment)鏍囧噯銆傛墍浠ラ氳繃Win32 API緙栧啓鐨凴PC搴旂敤紼嬪簭鑳戒笌鍏跺畠鎿嶄綔緋葷粺涓婃敮鎸丏EC鐨凴PC搴旂敤紼嬪簭閫氫俊銆備嬌鐢≧PC寮鍙戣呭彲浠ュ緩绔嬮珮鎬ц兘銆佺揣瀵嗚﹀悎鐨勫垎甯冨紡搴旂敤紼嬪簭銆?br><strong>2.11 NetBios</strong><strong>鍑芥暟</strong><br>銆銆Win32 API鎻愪緵NetBios鍑芥暟鐢ㄤ簬澶勭悊浣庣駭緗戠粶鎺у埗錛岃繖涓昏鏄負(fù)IBM NetBios緋葷粺緙栧啓涓嶹indows鐨勬帴鍙c傞櫎闈為偅浜涙湁鐗規(guī)畩浣庣駭緗戠粶鍔熻兘瑕佹眰鐨勫簲鐢ㄧ▼搴忥紝鍏跺畠搴旂敤紼嬪簭鏈濂戒笉瑕佷嬌鐢∟etBios鍑芥暟鏉ヨ繘琛岃繘紼嬮棿閫氫俊銆?br><strong>2.12 Sockets</strong><br>銆銆Windows Sockets瑙勮寖鏄互U.C.Berkeley澶уBSD UNIX涓祦琛岀殑Socket鎺ュ彛涓鴻寖渚嬪畾涔夌殑涓濂梂indows涓嬬殑緗戠粶緙栫▼鎺ュ彛銆傞櫎浜咮erkeley Socket鍘熸湁鐨勫簱鍑芥暟浠ュ錛岃繕鎵╁睍浜嗕竴緇勯拡瀵筗indows鐨勫嚱鏁幫紝浣跨▼搴忓憳鍙互鍏呭垎鍒╃敤Windows鐨勬秷鎭満鍒惰繘琛岀紪紼嬨?br>銆銆鐜板湪閫氳繃Sockets瀹炵幇榪涚▼閫氫俊鐨勭綉緇滃簲鐢ㄨ秺鏉ヨ秺澶氾紝榪欎富瑕佺殑鍘熷洜鏄疭ockets鐨勮法騫沖彴鎬ц姣斿叾瀹僆PC鏈哄埗濂藉緱澶氾紝鍙﹀WinSock 2.0涓嶄粎鏀寔TCP/IP鍗忚錛岃屼笖榪樻敮鎸佸叾瀹冨崗璁?濡侷PX)銆係ockets鐨勫敮涓緙虹偣鏄畠鏀寔鐨勬槸搴曞眰閫氫俊鎿嶄綔錛岃繖浣垮緱鍦ㄥ崟鏈虹殑榪涚▼闂磋繘琛岀畝鍗曟暟鎹紶閫掍笉澶柟渚匡紝榪欐椂浣跨敤涓嬮潰灝嗕粙緇嶇殑WM_COPYDATA娑堟伅灝嗘洿鍚堥備簺銆?br><strong>2.13 WM_COPYDATA</strong><strong>娑堟伅</strong><br>銆銆WM_COPYDATA鏄竴縐嶉潪甯稿己澶у嵈椴滀負(fù)浜虹煡鐨勬秷鎭傚綋涓涓簲鐢ㄥ悜鍙︿竴涓簲鐢ㄤ紶閫佹暟鎹椂錛屽彂閫佹柟鍙渶浣跨敤璋冪敤SendMessage鍑芥暟錛屽弬鏁版槸鐩殑紿楀彛鐨勫彞鏌勩佷紶閫掓暟鎹殑璧峰鍦板潃銆乄M_COPYDATA娑堟伅銆傛帴鏀舵柟鍙渶鍍忓鐞嗗叾瀹冩秷鎭偅鏍峰鐞哤M_COPY DATA娑堟伅錛岃繖鏍鋒敹鍙戝弻鏂瑰氨瀹炵幇浜嗘暟鎹叡浜?br>銆銆WM_COPYDATA鏄竴縐嶉潪甯哥畝鍗曠殑鏂規(guī)硶錛屽畠鍦ㄥ簳灞傚疄闄呬笂鏄氳繃鏂囦歡鏄犲皠鏉ュ疄鐜扮殑銆傚畠鐨勭己鐐規(guī)槸鐏墊椿鎬т笉楂橈紝騫朵笖瀹冨彧鑳界敤浜嶹indows騫沖彴鐨勫崟鏈虹幆澧冧笅銆?/p> <p> <wbr></p> <p><strong>3</strong> <strong>緇撴潫璇?/strong></p> <p>銆銆Win32 API涓哄簲鐢ㄧ▼搴忓疄鐜拌繘紼嬮棿閫氫俊鎻愪緵浜嗗姝ゅ縐嶉夋嫨鏂規(guī)錛岄偅涔堝紑鍙戣呭浣曡繘琛岄夋嫨鍛紵閫氬父鍦ㄥ喅瀹氫嬌鐢ㄥ摢縐岻PC鏂規(guī)硶涔嬪墠搴旇冭檻涓嬩竴浜涢棶棰橈紝濡傚簲鐢ㄧ▼搴忔槸鍦ㄧ綉緇滅幆澧冧笅榪樻槸鍦ㄥ崟鏈虹幆澧冧笅宸ヤ綔絳夈?br></p> <img src ="http://www.shnenglu.com/suiaiguo/aggbug/90697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/suiaiguo/" target="_blank">Saga</a> 2009-07-21 10:32 <a href="http://www.shnenglu.com/suiaiguo/archive/2009/07/21/90697.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://by4433.com" target="_blank">亚欧美中日韩视频</a>| <a href="http://777177c.com" target="_blank">亚洲精品资源</a>| <a href="http://qiruiwangluo.com" target="_blank">蜜臀av国产精品久久久久</a>| <a href="http://wwwby113.com" target="_blank">欧美一区二区三区在</a>| <a href="http://99999zc.com" target="_blank">亚洲一区中文</a>| <a href="http://cp88966.com" target="_blank">亚洲欧美成aⅴ人在线观看</a>| <a href="http://by3799.com" target="_blank">亚洲影院免费</a>| <a href="http://a6a3.com" target="_blank">久久大综合网</a>| <a href="http://082235.com" target="_blank">欧美凹凸一区二区三区视频</a>| <a href="http://wewe520.com" target="_blank">久久蜜臀精品av</a>| <a href="http://www225011.com" target="_blank">免费高清在线一区</a>| <a href="http://21bridal.com" target="_blank">欧美日韩精品系列</a>| <a href="http://dayomall.com" target="_blank">国产偷国产偷精品高清尤物</a>| <a href="http://9uu91.com" target="_blank">黄色av一区</a>| <a href="http://69jp.com" target="_blank">99riav国产精品</a>| <a href="http://zd-jm.com" target="_blank">午夜在线电影亚洲一区</a>| <a href="http://k82net.com" target="_blank">久久精品国产69国产精品亚洲</a>| <a href="http://e789a.com" target="_blank">久久婷婷av</a>| <a href="http://hmm47.com" target="_blank">亚洲免费av片</a>| <a href="http://tjpzgs.com" target="_blank">久久福利资源站</a>| <a href="http://jiazhuangma.com" target="_blank">免费不卡在线观看</a>| <a href="http://www77vcd.com" target="_blank">国产精品久久久久影院色老大</a>| <a href="http://66y3.com" target="_blank">激情欧美亚洲</a>| <a href="http://556995.com" target="_blank">亚洲一区高清</a>| <a href="http://98tangav.com" target="_blank">免费在线看成人av</a>| <a href="http://k68c.com" target="_blank">日韩特黄影片</a>| <a href="http://k-dchina.com" target="_blank">亚洲天堂成人</a>| <a href="http://ym5571.com" target="_blank">久久五月天婷婷</a>| <a href="http://xxxx48.com" target="_blank">亚洲乱码国产乱码精品精可以看</a>| <a href="http://sclddn.com" target="_blank">亚洲一区欧美一区</a>| <a href="http://www492002.com" target="_blank">欧美大片免费久久精品三p</a>| <a href="http://fulong-tj.com" target="_blank">欧美视频在线看</a>| <a href="http://pgpg520.com" target="_blank">亚洲激情亚洲</a>| <a href="http://sifeksa.com" target="_blank">羞羞答答国产精品www一本 </a>| <a href="http://0000zz.com" target="_blank">亚洲视频你懂的</a>| <a href="http://439368.com" target="_blank">久久久99精品免费观看不卡</a>| <a href="http://022291.com" target="_blank">亚洲国产一区在线</a>| <a href="http://9585865.com" target="_blank">一区二区三区视频观看</a>| <a href="http://ddh345.com" target="_blank">久久国产精品久久w女人spa</a>| <a href="http://spvicarb.com" target="_blank">欧美私人网站</a>| <a href="http://elpezomaha.com" target="_blank">亚洲欧洲另类国产综合</a>| <a href="http://bocai4488.com" target="_blank">午夜久久tv</a>| <a href="http://58yewu.com" target="_blank">日韩视频亚洲视频</a>| <a href="http://7269003.com" target="_blank">久久久久国产精品一区二区</a>| <a href="http://55kam.com" target="_blank">国产精品永久免费</a>| <a href="http://wwww999.com" target="_blank">亚洲精品一线二线三线无人区</a>| <a href="http://ccc982.com" target="_blank">欧美在线视频在线播放完整版免费观看</a>| <a href="http://caoliu20.com" target="_blank">免费人成精品欧美精品</a>| <a href="http://412342.com" target="_blank">欧美另类极品videosbest最新版本 </a>| <a href="http://155fck.com" target="_blank">免费亚洲一区二区</a>| <a href="http://060607.com" target="_blank">亚洲无线视频</a>| <a href="http://juegold.com" target="_blank">欧美日韩在线观看视频</a>| <a href="http://bizhijidi.com" target="_blank">日韩视频一区二区三区</a>| <a href="http://www333393.com" target="_blank">免费观看成人鲁鲁鲁鲁鲁视频</a>| <a href="http://99cheats.com" target="_blank">午夜一区在线</a>| <a href="http://4tobi.com" target="_blank">国产精品色婷婷</a>| <a href="http://344230.com" target="_blank">1769国内精品视频在线播放</a>| <a href="http://22400com.com" target="_blank">国产精品久久久久久久久久久久</a>| <a href="http://www35353.com" target="_blank">精品动漫一区</a>| <a href="http://gaobb52.com" target="_blank">久久九九热re6这里有精品</a>| <a href="http://wwwhhh396.com" target="_blank">亚洲图片欧洲图片av</a>| <a href="http://082235.com" target="_blank">欧美日韩一区二区精品</a>| <a href="http://456kp.com" target="_blank">日韩午夜黄色</a>| <a href="http://dmzjz.com" target="_blank">日韩亚洲欧美精品</a>| <a href="http://www22336.com" target="_blank">欧美日韩一区二区三区在线视频</a>| <a href="http://kanzhelu31.com" target="_blank">亚洲人被黑人高潮完整版</a>| <a href="http://5b6c.com" target="_blank">欧美国产日韩亚洲一区</a>| <a href="http://689558.com" target="_blank">麻豆精品视频在线</a>| <a href="http://bkksd.com" target="_blank">亚洲精品免费电影</a>| <a href="http://021jjjflaw.com" target="_blank">亚洲国产毛片完整版</a>| <a href="http://xxxxxdywvip18.com" target="_blank">久久一区国产</a>| <a href="http://xmt86.com" target="_blank">葵司免费一区二区三区四区五区</a>| <a href="http://wxsanyuan.com" target="_blank">国产综合色在线</a>| <a href="http://nvpuow.com" target="_blank">久久久青草婷婷精品综合日韩</a>| <a href="http://yjjs20.com" target="_blank">久久er精品视频</a>| <a href="http://4449992.com" target="_blank">亚洲二区三区四区</a>| <a href="http://9511331.com" target="_blank">亚洲区中文字幕</a>| <a href="http://www-878899.com" target="_blank">欧美激情中文字幕一区二区 </a>| <a href="http://yunduaner.com" target="_blank">欧美三日本三级少妇三2023 </a>| <a href="http://by2565.com" target="_blank">亚洲大胆女人</a>| <a href="http://www-11688.com" target="_blank">欧美a级一区二区</a>| <a href="http://huaihuaihuai.com" target="_blank">免费一级欧美片在线播放</a>| <a href="http://www-964664.com" target="_blank">亚洲日韩欧美视频</a>| <a href="http://sdsptl.com" target="_blank">日韩亚洲欧美精品</a>| <a href="http://4123123.com" target="_blank">国产一区二区三区直播精品电影</a>| <a href="http://817794.com" target="_blank">久久综合九色综合欧美就去吻 </a>| <a href="http://155fck.com" target="_blank">午夜久久资源</a>| <a href="http://0085212.com" target="_blank">亚洲精品在线观看免费</a>| <a href="http://lingshidu.com" target="_blank">99亚洲伊人久久精品影院红桃</a>| <a href="http://xtsjjw.com" target="_blank">欧美日韩在线三级</a>| <a href="http://430390.com" target="_blank">久久久99久久精品女同性</a>| <a href="http://51120guahao.com" target="_blank">狂野欧美一区</a>| <a href="http://sdgs6788.com" target="_blank">欧美一级专区免费大片</a>| <a href="http://y4088.com" target="_blank">麻豆91精品</a>| <a href="http://liuyangzi.com" target="_blank">亚洲欧美日本在线</a>| <a href="http://e789a.com" target="_blank">久久久久久高潮国产精品视</a>| <a href="http://nn99dd.com" target="_blank">日韩午夜高潮</a>| <a href="http://www-n77.com" target="_blank">久久精品亚洲热</a>| <a href="http://e7w2.com" target="_blank">亚洲天堂成人</a>| <a href="http://qqx123.com" target="_blank">久久夜色精品国产亚洲aⅴ</a>| <a href="http://70909g.com" target="_blank">一级日韩一区在线观看</a>| <a href="http://sdxinqi.com" target="_blank">午夜视频一区</a>| <a href="http://mmmm26.com" target="_blank">99精品视频网</a>| <a href="http://4008166177.com" target="_blank">亚洲欧美网站</a>| <a href="http://77427xyz.com" target="_blank">一本色道久久88亚洲综合88</a>| <a href="http://mmmm43.com" target="_blank">午夜亚洲影视</a>| <a href="http://87ssyy.com" target="_blank">亚洲婷婷综合色高清在线</a>| <a href="http://qkspvip.com" target="_blank">久久精品二区三区</a>| <a href="http://ziwufuren.com" target="_blank">欧美精品免费播放</a>| <a href="http://www442222.com" target="_blank">欧美亚洲日本网站</a>| <a href="http://xvideoav99.com" target="_blank">欧美一级视频精品观看</a>| <a href="http://916969.com" target="_blank">亚洲精品中文字</a>| <a href="http://989p.com" target="_blank">午夜精品网站</a>| <a href="http://yw6632.com" target="_blank">欧美一区日韩一区</a>| <a href="http://hankanzhan.com" target="_blank">亚洲国内在线</a>| <a href="http://929889.com" target="_blank">亚洲国产精品久久久久秋霞影院</a>| <a href="http://488089.com" target="_blank">国产精品高清在线观看</a>| <a href="http://ythbhg.com" target="_blank">欧美激情第1页</a>| <a href="http://www134rr.com" target="_blank">国产一区二区0</a>| <a href="http://my7877.com" target="_blank">在线亚洲观看</a>| <a href="http://cancerrxa.com" target="_blank">91久久国产自产拍夜夜嗨</a>| <a href="http://luqintang.com" target="_blank">亚洲欧美日韩综合</a>| <a href="http://3597777.com" target="_blank">亚洲夜间福利</a>| <a href="http://qiezisp2.com" target="_blank">欧美三日本三级少妇三2023 </a>| <a href="http://49028b.com" target="_blank">欧美另类videos死尸</a>| <a href="http://yc7878.com" target="_blank">美女国产一区</a>| <a href="http://xxx444vip.com" target="_blank">国模套图日韩精品一区二区</a>| <a href="http://1000kongbao.com" target="_blank">亚洲一二三四区</a>| <a href="http://dsjgqc.com" target="_blank">亚洲一区二区三区成人在线视频精品</a>| <a href="http://nvpuwo22.com" target="_blank">乱码第一页成人</a>| <a href="http://www90aaa.com" target="_blank">欧美国产日韩精品免费观看</a>| <a href="http://855821.com" target="_blank">亚洲一区bb</a>| <a href="http://5138555.com" target="_blank">久久夜色精品国产欧美乱</a>| <a href="http://www18818.com" target="_blank">国产精品久久久久久妇女6080 </a>| <a href="http://winkwink333.com" target="_blank">国产婷婷色一区二区三区四区 </a>| <a href="http://b871.com" target="_blank">欧美日韩国产va另类</a>| <a href="http://hsxinbao.com" target="_blank">亚洲第一天堂av</a>| <a href="http://5254f.com" target="_blank">亚洲黄一区二区</a>| <a href="http://kpd521.com" target="_blank">免费在线看一区</a>| <a href="http://www49773.com" target="_blank">欧美激情一区二区三区高清视频 </a>| <a href="http://1397979.com" target="_blank">午夜精品久久久久久99热</a>| <a href="http://gbandal.com" target="_blank">亚洲无线观看</a>| <a href="http://360cabin.com" target="_blank">国产精品v一区二区三区</a>| <a href="http://7357538.com" target="_blank">一本久久a久久精品亚洲</a>| <a href="http://8x29ft.com" target="_blank">亚洲天堂激情</a>| <a href="http://avicpharm.com" target="_blank">99热免费精品</a>| <a href="http://8090567.com" target="_blank">亚洲欧美日韩成人</a>| <a href="http://042225.com" target="_blank">国产视频久久久久</a>| <a href="http://by3799.com" target="_blank">久久精品国产清高在天天线</a>| <a href="http://894322.com" target="_blank">久久全球大尺度高清视频</a>| <a href="http://8181777.com" target="_blank">狠狠色伊人亚洲综合成人</a>| <a href="http://688528.com" target="_blank">久久精品视频在线观看</a>| <a href="http://388123cc.com" target="_blank">欧美不卡三区</a>| <a href="http://787299.com" target="_blank">99精品视频一区</a>| <a href="http://www-132377.com" target="_blank">国产精品久久二区</a>| <a href="http://777177c.com" target="_blank">欧美亚洲视频在线观看</a>| <a href="http://2225101.com" target="_blank">久久久久久久一区二区</a>| <a href="http://6623555.com" target="_blank">国产一区二区三区在线观看网站 </a>| <a href="http://6688zf.com" target="_blank">美女爽到呻吟久久久久</a>| <a href="http://tinganji.com" target="_blank">在线 亚洲欧美在线综合一区</a>| <a href="http://senlin86.com" target="_blank">久久免费黄色</a>| <a href="http://lutube666.com" target="_blank">亚洲精品男同</a>| <a href="http://mkaqiu.com" target="_blank">久久激情婷婷</a>| <a href="http://2323nn.com" target="_blank">亚洲欧洲日本在线</a>| <a href="http://978769.com" target="_blank">欧美日韩免费区域视频在线观看</a>| <a href="http://ccc3636.com" target="_blank">亚洲天堂av综合网</a>| <a href="http://www101804.com" target="_blank">麻豆91精品</a>| <a href="http://www-67499.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://xilxx.com" target="_blank">国产精品一区久久</a>| <a href="http://www497171c.com" target="_blank">久久综合九色九九</a>| <a href="http://480192.com" target="_blank">一本久久综合亚洲鲁鲁</a>| <a href="http://cao2014.com" target="_blank">欧美一区二区三区的</a>| <a href="http://ahhccz.com" target="_blank">亚洲电影免费在线观看</a>| <a href="http://969093.com" target="_blank">欧美日韩视频不卡</a>| <a href="http://862924.com" target="_blank">欧美资源在线</a>| <a href="http://412342.com" target="_blank">亚洲精品国产品国语在线app</a>| <a href="http://036762.com" target="_blank">午夜精品久久久久久久久久久久久</a>| <a href="http://aberyco.com" target="_blank">国产一在线精品一区在线观看</a>| <a href="http://wwwsfsf11.com" target="_blank">欧美91视频</a>| <a href="http://www35211.com" target="_blank">欧美亚洲专区</a>| <a href="http://583775.com" target="_blank">9i看片成人免费高清</a>| <a href="http://868482.com" target="_blank">久久这里只有精品视频首页</a>| <a href="http://wanmajc.com" target="_blank">亚洲视频免费在线</a>| <a href="http://www-772773.com" target="_blank">亚洲激情影院</a>| <a href="http://clwjbcxs.com" target="_blank">国产一区二区三区久久精品</a>| <a href="http://mmpzyw.com" target="_blank">欧美日韩视频一区二区</a>| <a href="http://www47777.com" target="_blank">久久人人97超碰国产公开结果</a>| <a href="http://teloregen.com" target="_blank">在线亚洲免费</a>| <a href="http://caca060.com" target="_blank">亚洲国产mv</a>| <a href="http://diao66.com" target="_blank">美国成人毛片</a>| <a href="http://778hao.com" target="_blank">欧美在线看片</a>| <a href="http://www-13978.com" target="_blank">亚洲视频一二三</a>| <a href="http://66y3.com" target="_blank">亚洲人成小说网站色在线</a>| <a href="http://viwasmart.com" target="_blank">国产日本亚洲高清</a>| <a href="http://20074972.com" target="_blank">欧美丝袜一区二区</a>| <a href="http://337105.com" target="_blank">欧美日韩成人在线观看</a>| <a href="http://6767673.com" target="_blank">美女视频黄免费的久久</a>| <a href="http://sepapapa8888.com" target="_blank">欧美在线1区</a>| <a href="http://921367.com" target="_blank">香蕉久久一区二区不卡无毒影院 </a>| <a href="http://uniconmgt.com" target="_blank">久久久天天操</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>