Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
C/C++Э³Ì¿âlibco£ºÎ¢ÐÅÔõÑùƯÁÁµØÍê³ÉÒì²½»¯¸ÄÔì
 
×÷Õß;Àî·½Ô´ À´Ô´£ºINfoQt ·¢²¼ÓÚ 2016-12-22
  3281  次浏览      29
 

Èç½ñ£¬Î¢ÐÅÓµÓÐÔ»îÔ¾Óû§8ÒÚ¡£

²»¿É·ñÈÏ£¬µ±½ñµÄ΢Ðźǫ́ӵÓÐ×ÅÇ¿´óµÄ²¢·¢ÄÜÁ¦¡£

²»¹ý£¬ ÕýÈçÂÞÂí²¢·ÇÒ»ÈÕ½¨³É£»Î¢Ðŵļ¼ÊõÒ²Ôø¾­ÂÔÏÔÖÉÄÛ¡£

΢Ðŵ®ÉúÓÚ2011Äê1Ô£¬µ±ÄêÓû§¹æÄ£Îª0.1ÒÚ×óÓÒ£»2013Äê11Ô£¬Î¢ÐÅÔ»îÔ¾Óû§Êý´ïµ½3.55ÒÚ£¬Ò»Ô¾³ÉΪÑÇÖÞµØÇøÓµÓÐ×î´óÓû§ÈºÌåµÄÒÆ¶¯Öն˼´Ê±Í¨Ñ¶Èí¼þ¡£

Ãæ¶ÔÈç´ËÌåÁ¿µÄÌáÉý£¬Î¢ÐźóÌ¨Ò²ÔøÔâÓö¼¬Êֵľ½¾³£»ÁîÈËÔÞ̾µÄÊǼ¼ÊõÈ˼°Ê±µØ×ö³öÁËÆ¯ÁÁµÄÓ¦¶Ô¡£

Õâ±³ºóÓÐ×ÅÔõÑùµÄ¼¼Êõ¹ÊÊ£¿

´Ëʱ´Ë¿Ì£¬ÄãÔÚ΢ÐÅÊÖ»ú¶Ë·¢³öµÄÇëÇó£¬ÊÇÔõÑù±»ºǫ́Ïû»¯ºÍ´¦ÀíµÄ£¿

¸ÃÏîÄ¿ÔÚ±£Áôºǫ́Ãô½ÝµÄͬ²½·ç¸ñͬʱ£¬Ìá¸ßÁËϵͳµÄ²¢·¢ÄÜÁ¦£¬½ÚÊ¡ÁË´óÁ¿µÄ·þÎñÆ÷³É±¾£»×Ô2013ÄêÆðÎȶ¨ÔËÐÐÓÚ΢ÐŵÄÊýÍǫ̀»úÆ÷Ö®ÉÏ¡£

΢Ðźó¶ËÓöµ½ÁËÎÊÌâ

ÔçÆÚ΢Ðźǫ́ÒòΪҵÎñÐèÇó¸´ÔÓ¶à±ä¡¢²úÆ·ÒªÇó¿ìËÙµü´úµÈÐèÇ󣬴󲿷ÖÄ£¿é¶¼²ÉÓÃÁ˰ëͬ²½°ëÒ첽ģÐÍ¡£½ÓÈë²ãΪÒ첽ģÐÍ£¬ÒµÎñÂß¼­²ãÔòÊÇͬ²½µÄ¶à½ø³Ì»ò¶àÏß³ÌÄ£ÐÍ£¬ÒµÎñÂß¼­µÄ²¢·¢ÄÜÁ¦Ö»Óм¸Ê®µ½¼¸°Ù¡£

Ëæ×Å΢ÐÅÒµÎñµÄÔö³¤£¬Ö±µ½2013ÄêÖУ¬Î¢Ðźǫ́»úÆ÷¹æÄ£ÒÑ´ïµ½1Íò¶ą̀£¬Éæ¼°Êý°Ù¸öºǫ́ģ¿é£¬RPCµ÷ÓÃÿ·ÖÖÓÊýÊ®ÒÚ¡£ÔÚÈç´ËÅÓ´ó¸´ÔÓµÄϵͳ¹æÄ£Ï£¬Ã¿¸öÄ£¿éºÜÈÝÒ×Êܵ½ºó¶Ë·þÎñ»òÕßÍøÂç¶¶¶¯µÄÓ°Ïì¡£Òò´ËÎÒÃǼ±Ðè¶Ô΢Ðźǫ́½øÐÐÒì²½»¯µÄ¸ÄÔì¡£

Òì²½»¯¸ÄÔì·½°¸µÄ¿¼Á¿

µ±Ê±ÎÒÃÇÓÐÁ½ÖÖÑ¡Ôñ£º

A Ïß³ÌÒì²½»¯£º°ÑËùÓзþÎñ¸ÄÔì³ÉÒ첽ģÐÍ£¬µÈͬÓÚ´Ó¿ò¼Üµ½ÒµÎñÂß¼­´úÂëµÄ³¹µ×¸ÄÔì

B Э³ÌÒì²½»¯£º¶ÔÒµÎñÂß¼­·ÇÇÖÈëµÄÒì²½»¯¸ÄÔ죬¼´Ö»ÐÞ¸ÃÉÙÁ¿¿ò¼Ü´úÂë

Á½ÕßÏà±È£¬¹¤×÷Á¿ºÍ·çÏÕϵÊýµÄ²îÒìÏÔ¶øÒ×¼û¡£ËäÈ»A·½°¸·þÎñÆ÷¶Ë¶àÏß³ÌÒì²½´¦ÀíÊdz£¼û×ö·¨£¬¶ÔÌá¸ß²¢·¢ÄÜÁ¦Õâ¸öԭʼĿ±ê·Ç³£×àЧ£»µ«ÊǶÔÓÚ΢Ðźǫ́Èç´Ë¸´ÔÓµÄϵͳ£¬Õâ¹ýÓÚºÄʱºÄÁ¦ÇÒ·çÏÕ¾Þ´ó¡£

ÎÞÂÛÊÇÒ첽ģÐÍ»¹ÊÇͬ²½Ä£ÐÍ£¬¶¼ÐèÒª±£´æÒ첽״̬¡£ËùÒÔÁ½ÕßÔÚ¼¼Êõϸ½ÚµÄÏàͬµãÊÇ£¬Á½¸ö·½°¸£¬¶¼ÊÇÐèҪά»¤µ±Ç°ÇëÇóµÄ״̬¡£ÔÚAÒ첽ģÐÍÖз½°¸£¬µ±ÇëÇóÐèÒª±»Òì²½Ö´ÐÐʱ£¬ÐèÒªÖ÷¶¯°ÑÇëÇóÏà¹ØÊý¾Ý±£´æÆðÀ´£¬Ôٵȴý״̬»úµÄÏÂÒ»´Îµ÷¶ÈÖ´ÐУ»¶øÔÚBЭ³ÌÄ£ÐÍ·½°¸ÖУ¬Ò첽״̬µÄ±£´æÓë»Ö¸´ÊÇ×Ô¶¯µÄ£¬Ð­³Ì»Ö¸´Ö´ÐеÄʱºò¾ÍÊÇÉÏÒ»´ÎÍ˳öʱµÄÉÏÏÂÎÄ¡£

Òò´Ë£¬BЭ³Ì·½°¸²»ÐèÒªÏÔʽµØÎ¬»¤Ò첽״̬£ºÒ»·½ÃæÔÚ±à³ÌÉÏ¿ÉÒÔ¸ü¼òµ¥ºÍÖ±½Ó£»ÁíÒ»·½ÃæÐ­³ÌÖÐÖ»ÐèÒª±£´æÉÙÁ¿µÄ¼Ä´æÆ÷¡£Òò´ËÔÚ¸´ÔÓϵͳÉÏ£¬Ð­³Ì·þÎñµÄÐÔÄÜ¿ÉÄܱȴ¿Ò첽ģÐ͸üÓÅ¡£

×ÛºÏÒÔÉÏ¿¼ÂÇ£¬×îÖÕÎÒÃÇÑ¡ÔñÁËB·½°¸£¬Í¨¹ýЭ³ÌµÄ·½Ê½¶Ô΢Ðźǫ́ÉϰٸöÄ£¿é½øÐÐÁËÒì²½»¯¸ÄÔì¡£

½Ó¹ÜÀúÊ·ÒÅÁôµÄͬ²½·ç¸ñAPI

·½°¸Çö¨Ö®ºó£¬½ÓÏÂÀ´×öµÄ¾ÍÊÇʵÏÖÒì²½»¯µÄͬʱ¾¡¿ÉÄܵØÉÙ×ö´úÂëÐ޸ġ£

ͨ³£¶øÑÔ£¬Ò»¸ö³£¹æµÄÍøÂçºǫ́·þÎñÐèÒªconnect¡¢write¡¢readµÈϵÁв½Ö裬Èç¹ûʹÓÃͬ²½·ç¸ñµÄAPI¶ÔÍøÂç½øÐе÷Óã¬Õû¸ö·þÎñÏ̻߳áÒòΪµÈ´ýÍøÂç½»»¥¶ø¹ÒÆð£¬Õâ¾Í»áÔì³ÉµÈ´ý²¢Õ¼ÓÃ×ÊÔ´¡£Ô­À´µÄÕâÖÖÇé¿öºÜÃ÷ÏÔµØÓ°Ïìµ½ÁËϵͳµÄ²¢·¢ÐÔÄÜ£¬µ«Êǵ±³õÕâÑùµÄÑ¡ÔñÊÇÒòΪ¶ÔÓ¦µÄͬ²½±à³Ì·ç¸ñ¾ßÓÐÆä¶ÀÌØµÄÓÅÊÆ£º´úÂëÂß¼­ÇåÎú¡¢Ò×ÓÚ±àд²¢ÇÒÖ§³ÖÒµÎñ¿ìËÙµü´úÃô½Ý¿ª·¢¡£

ÎÒÃǵĸÄÔì·½°¸ÐèÒªÏû³ýͬ²½·ç¸ñAPIµÄȱµã£¬µ«ÊÇͬʱ»¹Ï£Íû±£³Öͬ²½±à³ÌµÄÓŵ㡣

×îºóÔÚ²»ÐÞ¸ÄÏßÉÏÒÑÓеÄÒµÎñÂß¼­´úÂëµÄÇé¿öÏ£¬ÎÒÃǵÄlibco¿ò¼Ü´´ÐµؽӹÜÁËÍøÂçµ÷Óýӿڣ¨Hook£©¡£°ÑЭ³ÌµÄÈóöÓë»Ö¸´×÷ΪÒì²½ÍøÂçIOÖеÄÒ»´Îʼþ×¢²áÓë»Øµ÷¡£µ±ÒµÎñ´¦ÀíÓöµ½Í¬²½ÍøÂçÇëÇóµÄʱºò£¬libco²ã»á°Ñ±¾´ÎÍøÂçÇëÇó×¢²áΪÒ첽ʼþ£¬µ±Ç°µÄЭ³ÌÈóöCPUÕ¼Óã¬CPU½»¸øÆäËüЭ³ÌÖ´ÐС£ÔÚÍøÂçʼþ·¢Éú»òÕß³¬Ê±µÄʱºò£¬libco»á×Ô¶¯µÄ»Ö¸´Ð­³ÌÖ´ÐС£

libcoµÄ¼Ü¹¹

libco¼Ü¹¹´ÓÉè¼ÆµÄʱºò¾ÍÒѾ­È·Á¢ÏÂÀ´ÁË£¬×î½üµÄÔÚGitHubÉÏÒ»´Î½Ï´ó¸üÐÂÖ÷ÒªÊǹ¦ÄÜÉϵĸüС££¨×¢£ºlibcoΪ¿ªÔ´ÏîÄ¿£¬Ô´Âëͬ²½¸üУ¬¿ÉÒÆ²½£ºhttps://github.com/tencent/libco£©¡£

libco¿ò¼ÜÓÐÈý²ã£º·Ö±ðÊÇЭ³Ì½Ó¿Ú²ã¡¢ÏµÍ³º¯ÊýHook²ãÒÔ¼°Ê¼þÇý¶¯²ã¡£

Э³Ì½Ó¿Ú²ãʵÏÖÁËЭ³ÌµÄ»ù±¾Ô´Óï¡£co_create¡¢co_resumeµÈ¼òµ¥½Ó¿Ú¸ºÔðЭ³Ì´´½¨ÓÚ»Ö¸´¡£co_cond_signalÀà½Ó¿Ú¿ÉÒÔÔÚЭ³Ì¼ä´´½¨Ò»¸öЭ³ÌÐźÅÁ¿£¬¿ÉÓÃÓÚЭ³Ì¼äµÄͬ²½Í¨ÐÅ¡£

ϵͳº¯ÊýHook²ã¸ºÔðÖ÷Òª¸ºÔðϵͳÖÐͬ²½APIµ½Òì²½Ö´ÐеÄת»»¡£¶ÔÓÚ³£ÓõÄͬ²½ÍøÂç½Ó¿Ú£¬Hook²ã»á°Ñ±¾´ÎÍøÂçÇëÇó×¢²áΪÒ첽ʼþ£¬È»ºóµÈ´ýʼþÇý¶¯²ãµÄ»½ÐÑÖ´ÐС£

ʼþÇý¶¯²ãʵÏÖÁËÒ»¸ö¼òµ¥¸ßЧµÄÒì²½ÍøÂ·¿ò¼Ü£¬ÀïÃæ°üº¬ÁËÒì²½ÍøÂç¿ò¼ÜËùÐèÒªµÄʼþÓ볬ʱ»Øµ÷¡£¶ÔÓÚÀ´Ô´ÓÚͬ²½ÏµÍ³º¯ÊýHook²ãµÄÇëÇó£¬Ê¼þ×¢²áÓë»Øµ÷ʵÖÊÉÏÊÇЭ³ÌµÄÈóöÓë»Ö¸´Ö´ÐС£

Ïà±ÈỊ̈߳¬Ñ¡ÔñЭ³ÌÒâζ×Å£¿

±ÈÆðỊ̈߳¬¶ÔÓںܶàÈ˶øÑÔ£¬Ð­³ÌµÄÓ¦Óò¢²»ÊÇÄÇôÇá³µÊì·¡£

Ï̺߳ÍЭ³ÌµÄÏàͬµãÊÇʲô£¿

ÎÒÃÇ¿ÉÒÔ¼òµ¥ÈÏΪЭ³ÌÊÇÒ»ÖÖÓû§Ì¬Ị̈߳¬ËüÓëÏß³ÌÒ»ÑùÓµÓжÀÁ¢µÄ¼Ä´æÆ÷ÉÏÏÂÎÄÒÔ¼°ÔËÐÐÕ»£¬¶Ô³ÌÐòÔ±×îÖ±¹ÛµÄЧ¹û¾ÍÊÇ£¬´úÂë¿ÉÒÔÔÚЭ³ÌÀïÃæÕý³£µÄÔË×÷£¬¾ÍÏñÔÚÏß³ÌÀïÃæÒ»Ñù¡£µ«ÊÇÏ̺߳ÍЭ³Ì»¹ÊÇÓÐÇø±ðµÄ£¬ÎÒÃÇÐèÒªÖØµã¹Ø×¢ÊÇÔËÐÐÕ»¹ÜÀíģʽÓëЭ³Ìµ÷¶È²ßÂÔ¡£¹ØÓÚÕâÁ½µãµÄ¾ßÌåÖ´ÐУ¬ÔÚ±¾ÎĺóÐø²¿·Ö»á̸¼°¡£

ÄÇÁ½ÕߵIJ»Í¬µãÄØ£¿

Э³ÌµÄ´´½¨Óëµ÷¶ÈÏà±ÈÏß³ÌÒªÇáÁ¿µÃ¶à£¬¶øÇÒЭ³Ì¼äµÄͨÐÅÓëͬ²½ÊÇ¿ÉÒÔÎÞËøµÄ£¬ÈÎһʱ¿Ì¶¼¿ÉÒÔ±£Ö¤Ö»Óб¾Ð­³ÌÔÚ²Ù×÷Ïß³ÌÄÚµÄ×ÊÔ´¡£

ÎÒÃǵķ½°¸ÊÇʹÓÃЭ³Ì£¬µ«ÕâÒâζ×ÅÃæÁÙÒÔÏÂÌôÕ½£º

1.Òµ½çЭ³ÌÔÚC/C++»·¾³ÏÂûÓдó¹æÄ£Ó¦Óõľ­Ñé;

2.ÈçºÎ´¦Àíͬ²½·ç¸ñµÄAPIµ÷Óã¬ÈçSocket¡¢mysqlclientµÈ;

3.ÈçºÎ¿ØÖÆÐ­³Ìµ÷¶È;

4.ÈçºÎ´¦ÀíÒÑÓÐÈ«¾Ö±äÁ¿¡¢Ïß³Ì˽ÓбäÁ¿µÄʹÓÃ;

ÏÂÃæÎÒÃÇÀ´Ì½ÌÖÈçºÎ¹¥¿ËÕâËĸöÌôÕ½¡£

ÌôÕ½Ö®Ò»£ºÇ°ËùδÓеĴó¹æÄ£Ó¦ÓÃC/C++Э³Ì

ʵ¼ÊÉÏ£¬Ð­³ÌÕâ¸ö¸ÅÄîµÄÈ·ºÜÔç¾ÍÌá³öÀ´ÁË£¬µ«ÊÇÈ·ÊÇÒòΪ×î½ü¼¸ÄêÔÚijЩÓïÑÔÖУ¨Èçlua¡¢goµÈ)±»¹ã·ºµÄÓ¦ÓöøÖ𽥵ı»´ó¼ÒËùÊìÖª¡£µ«ÊÇÕæÕýÓÃÓÚC/C++ÓïÑԵġ¢²¢ÇÒÊÇ´ó¹æÄ£Éú²úµÄ×Åʵ²»¶à¡£

¶øÕâ¸ölibco¿ò¼ÜÖУ¬³ýÁËЭ³ÌÇл»Ê±¼Ä´æÆ÷±£´æÓë»Ö¸´Ê¹ÓÃÁË»ã±à´úÂ룬ÆäËü´úÂëʵÏÖ¶¼ÊÇÓÃC/C++ÓïÑÔ±àдµÄ¡£

ÄÇΪʲôÎÒÃÇÑ¡ÔñÁËC/C++ÓïÑÔ£¿

µ±Ç°Î¢Ðźǫ́¾ø´ó²¿·Ö·þÎñ¶¼»ùÓÚC++£¬Ô­ÒòÊÇ΢ÐÅ×îÔçµÄºǫ́¿ª·¢ÍŶӴÓÓÊÏäÑÓÐø¶øÀ´£¬ÓÊÏäÍŶÓһֱʹÓÃC++×÷Ϊºǫ́Ö÷Á÷¿ª·¢ÓïÑÔ£¬¶øÇÒC++ÄÜÂú×ã΢Ðźǫ́¶ÔÐÔÄܺÍÎȶ¨ÐÔµÄÒªÇó¡£

ÎÒÃǵÄC++ºǫ́·þÎñ¿ò¼ÜÔö¼ÓÁËЭ³ÌÖ§³ÖÖ®ºó£¬¸ß²¢·¢ºÍ¿ìËÙ¿ª·¢µÄì¶Ü½â¾öÁË¡£¿ª·¢Õß¾ø´ó²¿·ÖÇé¿öÏÂÖ»ÐèÒª¹Ø×¢²¢·¢ÊýµÄÅäÖ㬲»ÐèÒª¹Ø×¢Ð­³Ì±¾Éí¡£ÆäËûÓïÑÔÎÒÃÇÒ²»áÔÚһЩ¹¤¾ßÀïÃæ³¢ÊÔ£¬µ«ÊǶÔÓÚÕû¸ö΢Ðźǫ́¶øÑÔ£¬C++ÈÔÊÇÎÒÃÇδÀ´³¤ÆÚµÄÖ÷Á÷ÓïÑÔ¡£

ÌôÕ½Ö®¶þ£º±£Áôͬ²½·ç¸ñµÄAPI

ÕâÀïµÄ×ö·¨ÎÒÃÇÔÚÉÏÎÄÖÐÌáµ½ÁË´¦Àíͬ²½·ç¸ñµÄAPIµÄ˼··½·¨£º´ó²¿·Öͬ²½·ç¸ñµÄAPIÎÒÃǶ¼Í¨¹ýHookµÄ·½·¨À´½Ó¹ÜÁË£¬libco»áÔÚÇ¡µ±µÄʱ»úµ÷¶ÈЭ³Ì»Ö¸´Ö´ÐС£

ÔõÑù·ÀֹЭ³Ì¿âµ÷¶ÈÆ÷±»×èÈû£¿

libcoµÄϵͳº¯ÊýHook²ãÖ÷Òª´¦Àíͬ²½APIµ½Òì²½Ö´ÐеÄת»»£¬ÎÒÃǵ±Ç°µÄhook²ãÖ»´¦ÀíÁËÖ÷ÒªµÄͬ²½ÍøÂç½Ó¿Ú£¬¶ÔÓÚÕâЩ½Ó¿Ú£¬Í¬²½µ÷ÓûᱻÒì²½Ö´ÐУ¬²»»áµ¼ÖÂϵͳµÄÏß³Ì×èÈû¡£µ±È»£¬ÎÒÃÇ»¹ÓÐÉÙÁ¿Î´HookµÄͬ²½½Ó¿Ú£¬ÕâЩ½Ó¿ÚµÄµ÷ÓÿÉÄܻᵼÖÂЭ³Ìµ÷¶ÈÆ÷×èÈûµÈ´ý¡£

ÓëÏß³ÌÀàËÆ£¬µ±ÎÒÃDzÙ×÷¿çÏß³ÌÊý¾ÝµÄʱºò£¬ÐèҪʹÓÃḬ̈߳²È«¼¶±ðµÄº¯Êý¡£¶øÔÚЭ³Ì»·¾³Ï£¬Ò²ÊÇÓÐЭ³Ì°²È«µÄ´úÂëÔ¼Êø¡£ÔÚ΢Ðźǫ́£¬ÎÒÃÇÔ¼ÊøÁ˲»ÄÜʹÓõ¼ÖÂЭ³Ì×èÈûµÄº¯Êý£¬±ÈÈçpthread_mutex¡¢sleepÀຯÊý£¨¿ÉÒÔÓà poll(NULL, 0, timeout) ´úÌæ£©µÈ¡£¶ø¶ÔÓÚÒÑÓÐϵͳµÄ¸ÄÔ죬¾ÍÐèÒªÉóºËÒÑÓдúÂëÊÇ·ñ·ûºÏЭ³Ì°²È«¹æ·¶¡£

ÌôÕ½Ö®Èý£ºµ÷¶ÈǧÍò¼¶Ð­³Ì

µ÷¶È²ßÂÔ·½Ã棬ÎÒÃÇ¿ÉÒÔ¿´ÏÂLinuxµÄ½ø³Ìµ÷¶È£¬´ÓÔçÆÚµÄO(1)µ½Ä¿Ç°CFSÍêÈ«¹«Æ½µ÷¶È£¬¾­¹ýÁ˺ܸ´ÔÓµÄÑݽø¹ý³Ì£¬¶øÐ­³Ìµ÷¶ÈÊÂʵÉÏÒ²ÊÇ¿ÉÒԲο¼½ø³Ìµ÷¶È·½·¨µÄ£¬±ÈÈç˵Äã¿ÉÒÔ¶¨ÒåÒ»ÖÖµ÷¶È²ßÂÔ£¬Ê¹µÃЭ³ÌÔÚ²»Í¬µÄÏ̼߳äÇл»£¬µ«ÊÇÕâÑù×ö»á´øÀ´°º¹óµÄÇл»´ú¼Û¡£ÔÚ½ø³Ì/Ïß³ÌÉÏÃæ£¬ºǫ́·þÎñͨ³£ÒѾ­×öÁË×ã¹»¶àµÄ¹¤×÷£¬Ê¹µÃ¶àºË×ÊÔ´µÃµ½³ä·ÖʹÓã¬ËùÒÔЭ³ÌµÄ¶¨Î»Ó¦¸ÃÊÇÔÚÕâ¸ö»ù´¡ÉÏ·¢»Ó×î´óµÄÐÔÄÜ¡£

libcoµÄЭ³Ìµ÷¶È²ßÂԺܼò½à£¬µ¥¸öЭ³ÌÏÞ¶¨Ôڹ̶¨µÄÏß³ÌÄÚ²¿£¬½öÔÚÍøÂçIO×èÈûµÈ´ýʱºòÇгö£¬ÔÚÍøÂçIOʼþ´¥·¢Ê±ºòÇлأ¬Ò²¾ÍÊÇ˵ÔÚÕâ¸ö²ãÃæÉÏÃæ¿ÉÒÔÈÏΪЭ³Ì¾ÍÊÇÓÐÏÞ״̬»ú£¬ÔÚʼþÇý¶¯µÄÏß³ÌÀïÃæ¹¤×÷£¬ÏàÐźǫ́¿ª·¢µÄͬѧ»áÒ»ÏÂ×Ó¾ÍÃ÷°×ÁË¡£

ÄÇÔõôʵÏÖǧÍò¼¶±ðÄØ£¿

libcoĬÈÏÊÇÿһ¸öЭ³Ì¶ÀÏíÒ»¸öÔËÐÐÕ»£¬ÔÚЭ³Ì´´½¨µÄʱºò£¬´Ó¶ÑÄÚ´æ·ÖÅäÒ»¸ö¹Ì¶¨´óСµÄÄÚ´æ×÷Ϊ¸ÃЭ³ÌµÄÔËÐÐÕ»¡£Èç¹ûÎÒÃÇÓÃÒ»¸öЭ³Ì´¦Àíǰ¶ËµÄÒ»¸ö½ÓÈëÁ¬½Ó£¬ÄǶÔÓÚÒ»¸öº£Á¿½ÓÈë·þÎñÀ´Ëµ£¬ÎÒÃǵķþÎñµÄ²¢·¢ÉÏÏ޾ͺÜÈÝÒ×ÊÜÏÞÓÚÄÚ´æ¡£

ËùÒÔÁ¿¼¶µÄÎÊÌâ¾Íת»»³ÉÁËÔõÑù¸ßЧʹÓÃÄÚ´æµÄÎÊÌâ¡£

ΪÁ˽â¾öÕâ¸öÎÊÌ⣬libco²ÉÓõÄÊǹ²Ïíջģʽ¡££¨´«Í³ÔËÐÐÕ»¹ÜÀíÓÐstackfullºÍstacklessÁ½ÖÖģʽ£©¼òµ¥À´½²£¬ÊÇÈô¸É¸öЭ³Ì¹²Ïíͬһ¸öÔËÐÐÕ»¡£

ͬһ¸ö¹²ÏíջϵÄЭ³Ì¼äÇл»µÄʱºò£¬ÐèÒª°Ñµ±Ç°µÄÔËÐÐÕ»ÄÚÈÝ¿½±´µ½Ð­³ÌµÄ˽ÓÐÄÚ´æÖС£ÎªÁ˼õÉÙÕâÖÖÄڴ濽±´´ÎÊý£¬¹²ÏíÕ»µÄÄڴ濽±´Ö»·¢ÉúÔÚ²»Í¬Ð­³Ì¼äµÄÇл»¡£µ±¹²ÏíÕ»µÄÕ¼ÓÃÕßһֱûÓиıäµÄʱºò£¬Ôò²»ÐèÒª¿½±´ÔËÐÐÕ»¡£

ÔÙ¾ßÌåÒ»µã½²½²¹²ÏíÕ»µÄÔ­Àí£ºlibcoĬÈÏģʽ(stackfull) Âú×ã´ó²¿·ÖµÄÒµÎñ³¡¾°£¬Ã¿¸öЭ³Ì¶ÀÕ¼128kÕ»¿Õ¼ä£¬Ö»Ðè1GÄÚ´æ¾Í¿ÉÒÔÖ§³ÖÍò¼¶Ð­³Ì¡£ ¶ø¹²ÏíÕ»ÊÇlibcoÐÂÔöµÄÒ»¸öÌØÐÔ£¬¿ÉÒÔÖ§³Öµ¥»úǧÍòЭ³Ì£¬Ó¦¶Ôº£Á¿Á¬½ÓÌØÊⳡ¾°¡£ÊµÏÖÔ­ÀíÉÏ£¬¹²ÏíջģʽÔÚ´«Í³µÄstackfullºÍstacklessÁ½ÖÖģʽ֮¼ä×öÁ˸ö΢´´Ð£¬Óû§¿ÉÒÔ×Ô¶¨Òå·ÖÅäÈô¸É¸ö¹²ÏíÕ»Äڴ棬Э³Ì´´½¨Ê±Ö¸¶¨Ê¹ÓÃÄÄÒ»¸ö¹²ÏíÕ»¡£

²»Í¬Ð­³ÌÖ®¼äµÄÇл»¡¢ ÈçºÎÖ÷¶¯Í˳öÒ»¸öÕýÔÚÖ´ÐеÄЭ³Ì£¿ÎÒÃǰѹ²Ïíͬһ¿éÕ»ÄÚ´æµÄ¶à¸öЭ³Ì³ÆÎªÐ­³Ì×飬Э³Ì×éÄÚ²»Í¬Ð­³ÌÖ®¼äÇл»ÐèÒª°ÑÕ»Äڴ濽±´µ½Ð­³ÌµÄ˽Óпռ䣬¶øÐ­³Ì×éÄÚͬһ¸öЭ³ÌµÄÈóöÓë»Ö¸´Ö´ÐÐÔò²»ÐèÒª¿½±´Õ»Äڴ棬¿ÉÒÔÈÏΪ¹²ÏíÕ»µÄÕ»ÄÚ´æÊÇ¡°Ð´Ê±¿½±´¡±µÄ¡£

¹²ÏíջϵÄЭ³ÌÇл»ÓëÍ˳ö£¬ÓëÆÕͨЭ³ÌģʽµÄAPIÒ»Ö£¬co_yieldÓëco_resume£¬libcoµ×²ã»áʵÏÖ¹²ÏíÕ»µÄģʽϵݴÐ追±´Õ»ÄÚ´æ¡£

ÌôÕ½Ö®ËÄ£ºÈ«¾Ö±äÁ¿ VS˽ÓбäÁ¿

ÔÚstackfullģʽÏÂÃæ£¬¾Ö²¿±äÁ¿µÄµØÖ·ÊÇÒ»Ö±²»±äµÄ£»¶østacklessģʽÏÂÃæ£¬Ö»ÒªÐ­³Ì±»Çгö£¬ÄÇô¾Ö²¿±äÁ¿µÄµØÖ·¾ÍʧЧÁË£¬ÕâÊÇ¿ª·¢ÕßÐèҪעÒâµÄµØ·½¡£

libcoĬÈϵÄջģʽÊÇÿһ¸öЭ³Ì¶ÀÏíÔËÐÐÕ»µÄ£¬ÔÚÕâ¸öģʽÏ£¬¿ª·¢ÕßÐèҪעÒâÕ»ÄÚ´æµÄʹÓ㬾¡Á¿±ÜÃâ char buf[128 * 1024] ÕâÖÖ³¬´óÕ»±äÁ¿µÄÉêÇ룬µ±Õ»Ê¹ÓôóС³¬¹ý±¾Ð­³ÌÕ»´óСµÄʱºò£¬¾Í¿ÉÄܵ¼ÖÂÕ»Òç³öµÄcore¡£

¶øÔÚ¹²ÏíջģʽÏ£¬ËäÈ»ÔÚЭ³Ì´´½¨µÄʱºò¿ÉÒÔÓ³Éäµ½Ò»¸ö±È½Ï´óµÄÕ»ÄÚ´æÉÏÃæ£¬µ«Êǵ±±¾Ð­³ÌÐèÒªÈóö¸øÆäËüЭ³ÌÖ´ÐеÄʱºò£¬ÒÑʹÓÃÕ»µÄ¿½±´±£´æ¿ªÏúÒ²ÊÇÓеģ¬Òò´Ë×îºÃÒ²ÊǾ¡Á¿¼õÉÙ´óµÄ¾Ö²¿±äÁ¿Ê¹Ó᣸ü¶àµÄ£¬¹²ÏíջģʽÏ£¬ÒòΪÊǶà¸öЭ³Ì¹²ÏíÁËͬһ¸öÕ»¿Õ¼ä£¬Òò´Ë£¬Óû§ÐèҪעÒâЭ³ÌÄڵľֲ¿Õ»±äÁ¿µØÖ·²»¿ÉÒÔ¿çЭ³Ì´«µÝ¡£

Э³Ì˽ÓбäÁ¿µÄʹÓó¡¾°ÓëÏß³Ì˽ÓбäÁ¿ÀàËÆ£¬Ð­³Ì˽ÓбäÁ¿ÊÇÈ«¾Ö¿É¼ûµÄ£¬²»Í¬µÄЭ³Ì»á¶Ôͬһ¸öЭ³Ì±äÁ¿±£´æ×Ô¼ºµÄ¸±±¾¡£¿ª·¢Õß¿ÉÒÔͨ¹ýÎÒÃǵÄAPIºêÉùÃ÷Э³Ì˽ÓбäÁ¿£¬ÔÚʹÓÃÉÏÎÞÌØ±ðÐèҪעÒâµÄµØ·½¡£

¶à½ø³Ì³ÌÐò¸ÄÔìΪ¶àÏ̳߳ÌÐòʱºò£¬ÎÒÃÇ¿ÉÒÔÓÃ__threadÀ´¶ÔÈ«¾Ö±äÁ¿½øÐпìËÙÐ޸쬶øÔÚЭ³Ì»·¾³Ï£¬ÎÒÃÇ´´ÔìÁËЭ³Ì±äÁ¿ROUTINE_VAR£¬¼«´ó¼ò»¯ÁËЭ³ÌµÄ¸ÄÔ칤×÷Á¿¡£

¹ØÓÚЭ³Ì˽ÓбäÁ¿£¬ÒòΪЭ³ÌʵÖÊÉÏÊÇÏß³ÌÄÚ´®ÐÐÖ´Ðеģ¬ËùÒÔµ±ÎÒÃǶ¨ÒåÁËÒ»¸öÏß³Ì˽ÓбäÁ¿µÄʱºò£¬¿ÉÄÜ»áÓÐÖØÈëµÄÎÊÌâ¡£±ÈÈçÎÒÃǶ¨ÒåÁËÒ»¸ö__threadµÄÏß³Ì˽ÓбäÁ¿£¬Ô­±¾ÊÇÏ£Íûÿһ¸öÖ´ÐÐÂß¼­¶ÀÏíÕâ¸ö±äÁ¿µÄ¡£µ«µ±ÎÒÃǵÄÖ´Ðл·¾³Ç¨ÒƵ½Ð­³ÌÁËÖ®ºó£¬Í¬Ò»¸öÏß³Ì˽ÓбäÁ¿£¬¿ÉÄÜ»áÓжà¸öЭ³Ì»á²Ù×÷Ëü£¬Õâ¾Íµ¼ÖÂÁ˱äÁ¿³åÈëµÄÎÊÌ⡣Ϊ´Ë£¬ÎÒÃÇÔÚ×ölibcoÒì²½»¯¸ÄÔìµÄʱºò£¬°Ñ´ó²¿·ÖµÄÏß³Ì˽ÓбäÁ¿¸Ä³ÉÁËЭ³Ì¼¶Ë½ÓбäÁ¿¡£Ð­³Ì˽ÓбäÁ¿¾ßÓÐÕâÑùµÄÌØÐÔ£ºµ±´úÂëÔËÐÐÔÚ¶àÏ̷߳ÇЭ³Ì»·¾³ÏÂʱ£¬¸Ã±äÁ¿ÊÇÏß³Ì˽Óе컵±´úÂëÔËÐÐÔÚЭ³Ì»·¾³µÄʱºò£¬´Ë±äÁ¿ÊÇЭ³Ì˽Óеġ£µ×²ãµÄЭ³Ì˽ÓбäÁ¿»á×Ô¶¯Íê³ÉÔËÐл·¾³µÄÅжϲ¢ÕýÈ··µ»ØËùÐèµÄÖµ¡£

Э³Ì˽ÓбäÁ¿¶ÔÓÚÏÖÓл·¾³Í¬²½µ½Òì²½»¯¸ÄÔìÆðÁ˾Ù×ãÇáÖØµÄ×÷Óã¬Í¬Ê±ÎÒÃǶ¨ÒåÁËÒ»¸ö·Ç³£¼òµ¥·½±ãµÄ·½·¨¶¨ÒåЭ³Ì˽ÓбäÁ¿£¬¼òµ¥µ½Ö»ÐèÒ»ÐÐÉùÃ÷´úÂë¼´¿É¡£

¼ò¶øÑÔÖ®

Ò»¾ä»°×ܽálibco¿âµÄÔ­Àí£¬ÔÚЭ³ÌÀïÃæÓÃͬ²½·ç¸ñ±àд´úÂ룬ʵ¼ÊÔË×÷ÊÇʼþÇý¶¯µÄÓÐÏÞ״̬»ú£¬ÓÉÉϲãµÄ½ø³Ì/Ï̸߳ºÔð¶àºË×ÊÔ´µÄʹÓá£

×îÖÕЧ¹û£¬´ó¹¦¸æ³É

ÎÒÃÇÔø°ÑÒ»¸ö״̬»úÇý¶¯µÄ´¿Òì²½´úÀí·þÎñ¸Ä³ÉÁË»ùÓÚlibcoЭ³ÌµÄ·þÎñ£¬ÔÚÐÔÄÜÉϱÈ֮ǰÌáÉýÁË10%µ½20%£¬²¢ÇÒ£¬ÔÚ»ùÓÚЭ³ÌµÄͬ²½Ä£ÐÍÏ£¬ÎÒÃǺܼòµ¥µÄ¾ÍʵÏÖÁËÅúÁ¿ÇëÇóµÄ¹¦ÄÜ¡£

ÕýÈ統ʱËùÔ¸£¬ÎÒÃÇʹÓÃlibco¶Ô΢Ðźǫ́ÉϰٸöÄ£¿é½øÐÐÁËЭ³ÌÒì²½»¯¸ÄÔ죬ÔÚÕû¸öµÄ¸ÄÔì¹ý³ÌÖУ¬ÒµÎñÂß¼­´úÂë»ù±¾Ã»Óиı䣬ÐÞ¸ÄÖ»ÊÇÔÚ¿ò¼Ü²ã´úÂë¡£ÎÒÃÇËù×öµÄÊǰÑÔ­ÏÈÔÚÏß³ÌÄÚÖ´ÐеÄÒµÎñÂß¼­×ªµ½ÁËЭ³ÌÉÏÖ´ÐС£¸ÄÔìµÄ¹¤×÷Ö÷ÒªÊǸ´ºËϵͳÖÐÏß³Ì˽ÓбäÁ¿¡¢È«¾Ö±äÁ¿¡¢Ïß³ÌËøµÄʹÓã¬È·±£ÔÚЭ³ÌÇл»µÄʱºò²»»áÊý¾Ý´íÂÒ»òÕßÖØÈë¡£

ÖÁ½ñ£¬Î¢Ðźǫ́¾ø´ó²¿·Ö·þÎñ¶¼ÒÑÊÇ¶à½ø³Ì»ò¶àÏß³ÌЭ³ÌÄ£ÐÍ£¬²¢·¢ÄÜÁ¦Ïà±È֮ǰÓÐÁËÖʵÄÌáÉý£¬¶øÔÚÕâ¹ý³ÌÖÐÓ¦Ô˶øÉúµÄlibcoÒ²³ÉΪÁË΢Ðźǫ́¿ò¼ÜµÄ»ùʯ¡£

   
3281 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

DevOpsתÐÍÈÚÈëµ½ÆóÒµÎÄ»¯
DevOps ÄÜÁ¦Ä£ÐÍ¡¢Ñݽø¼°°¸ÀýÆÊÎö
»ùÓÚ DevOps ÀíÄîµÄ˽ÓÐ PaaS ƽ̨ʵ¼ù
΢Èí¿ª·¢ÍŶӵÄDevOpsʵ¼ùÆôʾ
Ïà¹ØÎĵµ

DevOpsÇý¶¯Ó¦ÓÃÔËά±ä¸ïÓë´´ÐÂ
ÔËά¹ÜÀí¹æ»®
ÈçºÎʵÏÖÆóÒµÓ¦Óò¿Êð×Ô¶¯»¯
ÔËά×Ô¶¯»¯Êµ¼ù֮·
Ïà¹Ø¿Î³Ì

×Ô¶¯»¯ÔËά¹¤¾ß£¨»ùÓÚDevOps£©
»¥ÁªÍøÔËάÓëDevOps
MySQLÐÔÄÜÓÅ»¯¼°ÔËάÅàѵ
ITϵͳÔËά¹ÜÀí
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

itilÎå´óÁ÷³Ìͼ
ITILÁ÷³Ì¹ÜÀíÁù²½×ß
ʹÓÃITIL V3×÷SOAÖÎÀíµÄ»ùʯ
IT·þÎñ¹ÜÀíµÄʵ¼ùÓë×ܽá
½è¼øITIL¼Ü¹¹ÀíÄîÌáÉýÐÅÏ¢»¯
ITILÁ÷³Ì×ܽá


»ùÓÚITILµÄIT·þÎñ¹ÜÀí
ITILÈÏÖ¤
ITSM/ITIL»ù´¡
IT¹æ»®¹ÜÀí
ITÍâ°ü¹ÜÀí
IT³É±¾¹ÜÀí

ÖйúÒÆ¶¯Í¨ÐÅ ÍøÂç¹æ»®Óë¹ÜÀí
ijº½¿Õ¹«Ë¾ IT¹æ»®ÓëÆóÒµ¼Ü¹¹
ij½ðÈÚ¹«Ë¾ IT·þÎñ¹ÜÀí£¨ITIL V3£©
ÖйúÁªÍ¨¼¯ÍÅ ITÇ°ÑØÖªÊ¶¸ÅÊö
Öк£ÓÍ ÆóÒµIT¼Ü¹¹Éè¼Æ