1銆佺涓姝ワ紝鍏ㄥ眬瀵硅薄“theApp”鐨勬瀯閫犲嚱鏁?
2銆佺湡姝g殑main鍑芥暟闅愯棌鍦ㄦ鏋跺唴錛孖DE涓?鎸塅11鍙互榪涘叆Main鍑芥暟
3銆佽煩杞埌AfxWinMain鍑芥暟錛岀湅鍒拌皟鐢ㄤ簡“InitInstace”铏氬嚱鏁幫紝鍙﹀CWinAPP鍘熸潵鏄粠CWinThread媧劇敓鐨勶紝鏄竴涓嚎紼嬶紝浠ュ墠娌℃敞鎰?/p>
4銆佹渶鍚庤繘鍏ヤ簡CWinThread::Run鍑芥暟錛屼篃灝辨槸榪涘叆浜嗘秷鎭車
OVERLAPPED,欏懼悕鎬濅箟涓洪噸鍙?涔嶄竴鐪嬩細寰堝鎬?閲嶅彔?璋佽窡璋侀噸鍙?浼間箮鍦╓IN32鐨凱rogramming涓病鏈夎繖涓蹇靛憖?瑕佽璁鴻繖涓棶棰樺氨瑕佽拷婧埌瀵硅澶嘔/O鐨勮闂腑銆?br> 鍦╓IN32涓?鐢ㄦ埛涓嶈兘璞′互鍓嶉偅鏍風洿鎺ュ紜歡榪涜璁塊棶,浣垮緱榪欎竴灞傚寮鍙戣呰岃█鏄釜"榛戠洅",鑰屾彁渚涗簡涓緇勫搴旂殑API鐨勬帴鍙?璁╁紑鍙戣呭熀浜庢彁渚涚殑鎺ュ彛榪涜寮鍙?鑰屾妸浣庡眰鐨勮闂氦緇欎簡Driver鎴栬呭唴鏍?鍦╓IN32涓?璁懼鐨勬蹇靛凡緇忚繙榪滆秴榪囦簡Moniter,Printer絳夌殑鑼冨洿,澶ф鍙互鍖呮嫭鏂囦歡,鐩綍,涓插彛,騫跺彛,綆¢亾浠ュ強鎺у埗鍙扮瓑.寰堣嚜鐒剁殑,褰撴垜浠璁塊棶榪欎釜璁懼鐨勬椂鍊?鎴戜滑鐨勭涓姝ュ氨鏄墦寮榪欎釜璁懼,鍏朵腑WIN32 API鎻愪緵鐨勬槸CreateFile,鍏蜂綋鐨勪嬌鐢ㄥ彲浠ュ弬鑰僊SDN,鍏朵腑鍖呮嫭鐨勪竴浜涘弬鏁拌〃鏄庝簡鏄惁榪欎釜璁懼宸茬粡瀛樺湪(dwCreationDisposition),鏄惁浠ョ嫭鍗犵殑鏂瑰紡(dwShareMode)鎵撳紑絳夌瓑.榪欓噷澶у鍙兘宸茬粡浜х敓浜嗚繖涓兂娉?鍛,鏃㈢劧鏄窡璁懼鎵撲氦閬?閭d箞璁懼鐨勯熷害榪欎箞鎱?鑰孋PU鐨勯熷害榪欎箞蹇?榪欎袱鑰呭簲璇ユ庝箞鍗忚皟濂藉憿?涓句釜渚嬪瓙璇?鎴戣璁塊棶杞洏涓婄殑璧勬枡,鍝曞畠鏄竴縐掑悗灝辮鍑烘潵浜?閭e叾瀹炲CPU涔熸槸涓縐嶅緢澶х殑嫻垂鍛.鏄殑,鐨勭‘浼氭湁榪欎釜闂,鏃㈢劧鏈夐棶棰?鎴戜滑灝辮瑙e喅,鑰孧icroSoft鐨勮В鍐蟲柟寮忓氨鏄繖閲屾垜浠殑璁ㄨ棰樼洰:OverLapped榪欎釜瀛楃鍒板簳鏄粈涔堝惈涔夊憿?鍏跺疄瀹冪殑鎰忔濆氨鏄綋紼嬪簭鍦ㄧ瓑寰呰澶囨搷浣滅殑鏃跺?鍙互緇х畫寰涓嬪仛鑰屼笉蹇呴樆濉炲埌閭d釜鍦版柟絳夊緟璁懼鎿嶄綔鐨勮繑鍥?榪欏氨閫犳垚浜嗙▼搴忚繍琛屽拰璁懼鎿嶄綔鏃墮棿涓婄殑閲嶅彔.鏄殑,鏄繖鏍風殑,紲炲鍚?閭d箞紼嬪簭璇ユ庝箞鐭ラ亾璁懼鎿嶄綔浠涔堟椂鍊欏仛瀹屼簡榪斿洖浜嗗憿...
璁插埌榪欎釜鍦版柟,鎴戜滑鍙堣寮曞叆澶氱嚎紼嬬殑姒傚康浜?鍏跺疄鐩鎬俊澶у瀵瑰綰跨▼閮芥湁浜嗕竴瀹氱殑浜嗚В,鍏跺疄澶氱嚎紼嬩富瑕佸氨鏄竴涓悓姝ョ殑闂,濡備綍鍗忚皟濂借繖浜?璺戣搗鏉ュ氨涓嶇緛"鐨勭嚎紼?WIN32鎻愪緵緇欐垜浠殑鏄疻aitForSingleObject鍜學aitForMultiObject榪欎袱涓嚱鏁?鑰學IN32涓彁渚涗簡涓緇勪笓闂ㄧ敤鏉ュ悓姝ョ殑瀵硅薄鍖呮嫭Critical Section,Mutex,Semaphore,Event絳?榪欏叾涓殑緇濆ぇ澶氭暟閮藉睘浜庡唴鏍稿璞?Kernal Object),鍏朵腑榪欎簺瀵硅薄涓庝竴鑸璞$殑鏈澶у尯鍒氨鏄粬浠槸灞炰簬緋葷粺鍐呮牳緇存姢鐨勪竴鍧楁暟鎹粨鏋?紼嬪簭涓嶈兘鐩存帴璁塊棶浠栦滑.榪欎簺瀵硅薄閮藉叿澶囦袱縐嶅艦鎬?榪欓噷鎴戜滑涓嶅Θ縐頒箣涓?鏈変俊鍙風殑鍜屾棤淇″彿鐨?榪欐牱褰撴垜浠嬌鐢╓ait鍑芥暟鐨勬椂鍊?灝卞彲浠ユ牴鎹俊鍙風殑鏈夋棤鏉ヤ嬌寰楃▼搴忔槸鍚﹂樆濉炲湪wait鐨勫湴鏂?綆鍗曠殑璇?灝辨槸褰撴垜浠皟鐢ㄤ竴涓嚱鏁?WaiForSingObject(Event a);鐨勬椂鍊?濡傛灉a浜嬩歡鏈変俊鍙?閭d箞紼嬪簭灝卞線涓嬭窇,濡傛灉鏄棤淇″彿鐨?閭d箞紼嬪簭灝遍樆濉炲湪褰撳墠浣嶇疆,絳夊緟鍏跺彉涓烘湁淇″彿鐨?涓句釜褰㈣薄鐨勭矑瀛?姣斿綰跨▼鏄釜鍦ㄩ珮閫熷叕璺笂璺戠殑姹借濺,Wait鍑芥暟鐨勪綔鐢ㄥ氨鏄榪欒締姹借濺寮鍒頒竴涓崄瀛楄礬鍙?絳夊緟璺彛鐨勪俊鍙風伅鏄惁涓虹豢鑹茬殑,濡傛灉鏄偅涔堟苯杞︽帴鐫寰涓嬭窇,鍚﹀垯瀵逛笉璧?璇風瓑鍦ㄩ偅杈圭瓑淇″彿鐏彉涓虹豢鑹?.
鍦ㄨ繖閲?鎴戜嬌鐢ㄤ笅鏉ユ渶鏂逛究鐨勫氨鏄疎vent榪欎釜瀵硅薄浜?鍥犱負鎴戜滑鍙互寰堟柟渚跨殑瀵瑰畠榪涜鎿嶄綔,姣斿SetEvent浣跨殑瀹冨彉涓烘湁淇″彿鐨?鑰孯esetEvent浣垮緱瀹冨彉涓烘棤淇″彿鐨?褰撶劧鍏朵粬鐨勪竴浜涙瘮濡侻utex鍦ㄤ嬌寰楃▼搴忎笉鑳介噸澶嶅姞杞界瓑鍦版柟涔熷緢鏂逛究..
榪欐牱褰撴垜浠兂瑕佸紓姝ョ殑(OVERLAPPED)璁塊棶璁懼鐨勬椂鍊?鍙棣栧厛鍦–reataFile鐨勬椂鍊欑敤涓?OVERLAPPED)鏍囧織,鐒跺悗鍦ㄨ鍐欐搷浣?瀵瑰簲鐨勬槸WriteFile鍜孯eadFile)鐨勬椂鍊欏悓鏍蜂嬌鐢ㄨ繖涓爣蹇楀嵆鍙?..
鐪嬬湅涓嬮潰榪欐:
鍙傝冩枃鐚? Advanced Windows Mlutithreading Applications in Wim32
2.sizeof鏄畻絎︼紝strlen鏄嚱鏁般?
3.sizeof鍙互鐢ㄧ被鍨嬪仛鍙傛暟錛宻trlen鍙兘鐢╟har*鍋氬弬鏁幫紝涓斿繀欏繪槸浠?'\0''緇撳熬鐨勩?/p>
4.鏁扮粍鍋歴izeof鐨勫弬鏁頒笉閫鍖栵紝浼犻掔粰strlen灝遍鍖栦負鎸囬拡浜嗐?
5.澶ч儴鍒嗙紪璇戠▼搴忓湪緙栬瘧鐨勬椂鍊欏氨鎶妔izeof璁$畻榪囦簡 鏄被鍨嬫垨鏄彉閲忕殑闀垮害榪欏氨鏄痵izeof(x)鍙互鐢ㄦ潵瀹氫箟鏁扮粍緇存暟鐨勫師鍥?
char str[20]="0123456789";//str鏄紪璇戞湡澶у皬宸茬粡鍥哄畾鐨勬暟緇?br>int a=strlen(str); //a=10;//strlen()鍦ㄨ繍琛岃搗紜畾
int b=sizeof(str); //鑰宐=20;//sizeof()鍦ㄧ紪璇戞湡紜畾
6.strlen鐨勭粨鏋滆鍦ㄨ繍琛岀殑鏃跺欐墠鑳借綆楀嚭鏉ワ紝鏄敤鏉ヨ綆楀瓧絎︿覆鐨勫疄闄呴暱搴︼紝涓嶆槸綾誨瀷鍗犲唴瀛樼殑澶у皬銆?
7.sizeof鍚庡鏋滄槸綾誨瀷蹇呴』鍔犳嫭寮э紝濡傛灉鏄彉閲忓悕鍙互涓嶅姞鎷姬銆傝繖鏄洜涓簊izeof鏄釜鎿嶄綔絎︿笉鏄釜鍑芥暟銆?br> char c;
sizeof c;//鍙橀噺鍚嶅彲浠ヤ笉鍔犳嫭寮?/strong>
8.褰撻傜敤浜嗕簬涓涓粨鏋勭被鍨嬫椂鎴栧彉閲忥紝 sizeof 榪斿洖瀹為檯鐨勫ぇ灝忥紝
褰撻傜敤涓闈欐佸湴絀洪棿鏁扮粍錛?sizeof 褰掕繕鍏ㄩ儴鏁扮粍鐨勫昂瀵搞?br> sizeof 鎿嶄綔絎︿笉鑳借繑鍥炲姩鎬佸湴琚垎媧句簡鐨勬暟緇勬垨澶栭儴鐨勬暟緇勭殑灝哄
9.鏁扮粍浣滀負鍙傛暟浼犵粰鍑芥暟鏃朵紶鐨勬槸鎸囬拡鑰屼笉鏄暟緇勶紝浼犻掔殑鏄暟緇勭殑棣栧湴鍧錛?br>濡傦細
fun(char [8])
fun(char [])
閮界瓑浠蜂簬 fun(char *)
鍦–++閲屽弬鏁頒紶閫掓暟緇勬案榪滈兘鏄紶閫掓寚鍚戞暟緇勯鍏冪礌鐨勬寚閽堬紝緙栬瘧鍣ㄤ笉鐭ラ亾鏁扮粍鐨勫ぇ灝?br>濡傛灉鎯沖湪鍑芥暟鍐呯煡閬撴暟緇勭殑澶у皬錛?闇瑕佽繖鏍峰仛錛?br>榪涘叆鍑芥暟鍚庣敤memcpy鎷瘋礉鍑烘潵錛岄暱搴︾敱鍙︿竴涓艦鍙備紶榪涘幓
fun(unsiged char *p1, int len)
{
unsigned char* buf = new unsigned char[len+1]
memcpy(buf, p1, len);
}
鎴戜滑鑳藉父鍦ㄧ敤鍒?sizeof 鍜?strlen 鐨勬椂鍊欙紝閫氬父鏄綆楀瓧絎︿覆鏁扮粍鐨勯暱搴?br>鐪嬩簡涓婇潰鐨勮緇嗚В閲婏紝鍙戠幇涓よ呯殑浣跨敤榪樻槸鏈夊尯鍒殑錛屼粠榪欎釜渚嬪瓙鍙互鐪嬪緱寰堟竻妤氾細
har str[11]="0123456789";//娉ㄦ剰榪欓噷str澶у皬鍥犺澶т簬絳変簬11錛屽簲鑰冭檻'\0'鍦ㄥ唴錛屽惁鍒欑紪璇戝櫒浼氭姤閿?br>int a=strlen(str); //a=10; >>>> strlen 璁$畻瀛楃涓茬殑闀垮害錛屼互緇撴潫絎?0x00 涓哄瓧絎︿覆緇撴潫銆?br>int b=sizeof(str); //鑰宐=11; >>>> sizeof 璁$畻鐨勫垯鏄垎閰嶇殑鏁扮粍 str[11] 鎵鍗犵殑鍐呭瓨絀洪棿鐨勫ぇ灝忥紝涓嶅彈閲岄潰瀛樺偍鐨勫唴瀹規敼鍙樸?nbsp;
涓婇潰鏄闈欐佹暟緇勫鐞嗙殑緇撴灉錛屽鏋滄槸瀵規寚閽堬紝緇撴灉灝變笉涓鏍蜂簡
char* ss = "0123456789";
sizeof(ss) 緇撴灉 4 錛濓紳錛濄媠s鏄寚鍚戝瓧絎︿覆甯擱噺鐨勫瓧絎︽寚閽堬紝sizeof 鑾峰緱鐨勬槸涓涓寚閽堢殑涔嬫墍鍗犵殑絀洪棿,搴旇鏄暱鏁村瀷鐨勶紝鎵浠ユ槸4
sizeof(*ss) 緇撴灉 1 錛濓紳錛濄?ss鏄涓涓瓧絎?鍏跺疄灝辨槸鑾峰緱浜嗗瓧絎︿覆鐨勭涓浣?0' 鎵鍗犵殑鍐呭瓨絀洪棿錛屾槸char綾誨瀷鐨勶紝鍗犱簡 1 浣峴trlen(ss)= 10 >>>> 濡傛灉瑕佽幏寰楄繖涓瓧絎︿覆鐨勯暱搴︼紝鍒欎竴瀹氳浣跨敤 strlen
鍙﹀,涓嬮潰鐨勬柟娉曞彲浠ョ敤浜庣‘瀹氳闈欐佹暟緇勫彲浠ュ綰沖厓绱犵殑涓暟錛?br>int a[3]={1,2,3};
cout << sizeof a/sizeof ( typeid( a[0] ).name() );