Proactor鍜孯eactor妯″紡_缁х画骞跺彂绯荤粺璁捐鐨勬壂鐩?杞

Proactor鍜孯eactor妯″紡_缁х画骞跺彂绯荤粺璁捐鐨勬壂鐩?杞?
Proactor鍜孯eactor妯″紡_缁х画骞跺彂绯荤粺璁捐鐨勬壂鐩?

Proactor鍜孯eactor閮芥槸骞跺彂缂栫▼涓殑璁捐妯″紡銆傚湪鎴戠湅鏉ワ紝浠栦滑閮芥槸鐢ㄤ簬娲惧彂/鍒嗙IO鎿嶄綔浜嬩欢鐨勩€傝繖閲屾墍璋撶殑
IO浜嬩欢涔熷氨鏄濡俽ead/write鐨処O鎿嶄綔銆?娲惧彂/鍒嗙"灏辨槸灏嗗崟鐙殑IO浜嬩欢閫氱煡鍒颁笂灞傛ā鍧椼€備袱涓ā寮忎笉鍚岀殑鍦版柟
鍦ㄤ簬锛孭roactor鐢ㄤ簬寮傛IO锛岃€孯eactor鐢ㄤ簬鍚屾IO銆?

鍙互鐪嬪嚭锛屼袱涓ā寮忕殑鐩稿悓鐐癸紝閮芥槸瀵规煇涓狪O浜嬩欢鐨勪簨浠堕€氱煡(鍗冲憡璇夋煇涓ā鍧楋紝杩欎釜IO鎿嶄綔鍙互杩涜鎴栧凡缁忓畬鎴?銆傚湪缁撴瀯
涓婏紝涓よ€呬篃鏈夌浉鍚岀偣锛歞emultiplexor璐熻矗鎻愪氦IO鎿嶄綔(寮傛)銆佹煡璇㈣澶囨槸鍚﹀彲鎿嶄綔(鍚屾)锛岀劧鍚庡綋鏉′欢婊¤冻鏃讹紝灏卞洖璋僪andler銆?
涓嶅悓鐐瑰湪浜庯紝寮傛鎯呭喌涓?Proactor)锛屽綋鍥炶皟handler鏃讹紝琛ㄧずIO鎿嶄綔宸茬粡瀹屾垚锛涘悓姝ユ儏鍐典笅(Reactor)锛屽洖璋僪andler鏃讹紝琛ㄧず
IO璁惧鍙互杩涜鏌愪釜鎿嶄綔(can read or can write)锛宧andler杩欎釜鏃跺€欏紑濮嬫彁浜ゆ搷浣溿€?


Reactor閫氳繃鏌愮鍙樺舰锛屽彲浠ュ皢鍏舵敼瑁呬负Proactor锛屽湪鏌愪簺涓嶆敮鎸佸紓姝O鐨勭郴缁熶笂锛屼篃鍙互闅愯棌搴曞眰鐨勫疄鐜帮紝鍒╀簬缂栧啓璺ㄥ钩鍙?
浠g爜銆傛垜浠彧闇€瑕佸湪dispatch(涔熷氨鏄痙emultiplexor)涓皝瑁呭悓姝O鎿嶄綔鐨勪唬鐮侊紝鍦ㄤ笂灞傦紝鐢ㄦ埛鎻愪氦鑷繁鐨勭紦鍐插尯鍒拌繖涓€灞傦紝
杩欎竴灞傛鏌ュ埌璁惧鍙搷浣滄椂锛屼笉鍍忓師鏉ョ珛鍗冲洖璋僪andler锛岃€屾槸寮€濮婭O鎿嶄綔锛岀劧鍚庡皢鎿嶄綔缁撴灉鏀惧埌鐢ㄦ埛缂撳啿鍖?璇?锛岀劧鍚庡啀
鍥炶皟handler銆傝繖鏍凤紝瀵逛簬涓婂眰handler鑰岃█锛屽氨鍍忔槸proactor涓€鏍枫€傝缁嗘妧娉曞弬瑙佽繖绡囨枃绔犮€?

鍏跺疄灏辫璁℃ā寮忚€岃█锛屾垜涓汉瑙夊緱鏌愪釜妯″紡鍏跺疄鏄病鏈夊畬鍏ㄥ浐瀹氱殑缁撴瀯鐨勩€備笉鑳借鏌愪釜妯″紡閲屽氨鑲畾浼氭湁鏌愪釜绫伙紝绫讳箣闂寸殑
鍏崇郴灏辫偗瀹氭槸杩欐牱銆傚湪瀹為檯鍐欑▼搴忚繃绋嬩腑涔熷緢灏戝幓鐗瑰埆鍦板疄鐜版煇涓ā寮忥紝鍙兘璇存ā寮忎細缁欎綘鏇村鏇村ソ鐨勬灦鏋勬柟妗堛€?

鏈€杩戝湪鐪媠pserver鐨勪唬鐮侊紝鐪嬪埌鍒汉鎻愬悇绉嶅苟鍙戠郴缁熶腑鐨勬ā寮忥紝鏈夌偣鐪肩孩锛屼簬鏄墠鏉ユ壂鎵洸銆傜煡閬撲粈涔堟槸leader follower妯″紡锛?
reactor, proactor锛宮ultiplexing锛屽浜庡績涓殑閭d釜缃戠粶搴撲篃瓒婃潵瓒婃竻鏅般€?

鏈€杩戣繕骞蹭簡浜涚璋辩殑浜嬶紝鍐欎簡浼犺涓殑瀛楄妭娴佺紪鐮侊紝鐢ㄦā鏉跨殑鏂瑰紡瀹炵幇锛屼笉浣嗕繚鎸佷簡鎵╁睍鎬э紝杩樺皯鍐欏緢澶氫唬鐮侊紱澶勪簬鏁堢巼鑰冭檻锛?
鍐欎簡涓猻tatic array瀹瑰櫒(鍏跺疄灏辨槸template <typename _Tp, std::size_t size> class static_array { _Tp _con[size])锛?
鍔犱簡iterator锛岄伒寰猄TL鏍囧噯锛屽彲浠ョ粨鍚堣繘STL鐨勫悇涓猤eneric algorithm鐢紝鑷垜鎰熻涓嶉敊銆傚熀纭€妯″潡鎼缓瀹屾瘯锛岃В鏋愪簡鍏徃
鏈嶅姟鍣ㄧ綉缁滄ā鍧楃殑娑堟伅锛屾垜鏄笉鏄湡鐨勬墦绠楃敤鑷繁鐨勭綉缁滄ā鍧楅噸鍐欐垜鐨勯獙璇佹湇鍔″櫒锛熷湪鍙︿竴涓粰鍏徃鍐欑殑宸ュ叿閲岋紝鍥犱负瀹炲湪鍘屾伓
瓒婃潵瓒婂鐨勯噸澶嶄唬鐮侊紝绱㈡€у啓浜嗗嚑涓畯锛岃繕鐪熺殑鍋氬埌浜嗕唬鐮佺殑鑷姩鐢熸垚:D銆?

瀵逛紭闆呬唬鐮佺殑杩芥眰鐪熺殑鎴愪簡绉嶇櫀濂?  = =|