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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʲôÊÇḬ̈߳²È«£¿Ò»ÎÄ´øÄãÉîÈëÀí½â
 
×÷Õߣºadminit
  2605  次浏览      27
 2021-3-26
 
±à¼­ÍƼö:
±¾Æª²ÉÓÃͼ½â + ´ó°×»°µÄÐÎʽÀ´½²½â,Ö÷Òª¾ÍÊǽéÉܲÙ×÷ϵͳÖÐÊÇÓÃʲô·½·¨½â¾ö¶àḬ̈߳²È«.
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

ÄÚÈÝ´ó¸Ù

С¹ÊÊÂ

´øÐ½¶×¿Ó£¬ÏàÐŶ¼ÊÇ´ó»ï¶¼°®×öµÄÊÂÇ飬°¢ÐÇÒ²²»ÀýÍ⣬µ«ÊÇÎÒ˾ËùÔÚµÄÂ¥²ãµÄ¿Óλ½ÏÉÙ£¬ÖàÉÙÉ®¶à£¬Ê®·Ö·³ÄÕ¡£

°¢ÐÇ£¨Ïß³ÌA£©Ã¿´ÎÈ¥²ÞËù£¨¹²Ïí×ÊÔ´£©£¬ÃŶ¼ÊÇËø×ŵģ¬ËµÃ÷ÓÐͬÊÂÔÚÀïÃæÕ¼×ſӣ¨Ïß³ÌB³ÖÓÐËø£©£¬Ö»ÄÜÎÞÄεÄÔÚÍâÃæ¹Ô¹ÔµÄµÈ×Å£¬²»¾Ãºó³åË®ÉùÏìÆð£¬Í¬ÊÂˬÍê³öÀ´£¨Ïß³ÌBÊÍ·ÅËø£©£¬°¢ÐÇÒ»¸ö½¡²½½øÈë²ÞËù°ÑÃÅËø×¡£¨Ïß³ÌA³ÖÓÐËø£©£¬ÏíÊÜÊôÓÚ×Ô¼ºµÄ¿Õ¼ä£¬ÍíÀ´µÄÆäËûͬÊÂÖ»ÄܹԹÔÅŶӣ¬Ò»Çж¼ÊÇÄÇô¾®È»ÓÐÐò¡£

¼ÙÉèÃÅËø»µÁË£¬¾®È»ÓÐÐò¾Í²»´æÔÚÁË£¬ÉϲÞËù²»ÔÙÊÇÏíÊÜ£¬¶øÊǸ߶ȽôÕÅ£¬·ÀÖ¹ÃÅͻȻ±»´ò¿ª£¬¸üÔã¸âµÄÊÇ£¬¿ªÃÅʱ£¬ÊǸöÃÃ×Ó£¬Õâϲ»½ö½öÊÇḬ̈߳²È«ÎÊÌ⣬»¹ÓÐÊý×éÔ½½çÁË¡£

¹ÊÊÂ˵Í꣬³¶ÁËÄÇô¶à£¬¾ÍÊÇÏë˵Ã÷£¬ÔÚ¶àÏ̻߳·¾³À¶Ô¹²Ïí×ÊÔ´½øÐвÙ×÷£¬Èç¹û¶àÏß³ÌÖ®¼ä²»×öºÏÀíµÄЭ×÷£¨»¥³âÓëͬ²½£©£¬ÄÇôһ¶¨»á·¢Éú·­³µÏÖ³¡¡£

¾ºÕùÌõ¼þ

ÒòΪ¶àÏ̹߳²Ïí½ø³Ì×ÊÔ´£¬ÔÚ²Ù×÷ϵͳµ÷¶È½ø³ÌÄڵĶàÏß³Ìʱ£¬±ØÈ»»á³öÏÖ¶àÏ߳̾ºÕù¹²Ïí×ÊÔ´ÎÊÌ⣬Èç¹û²»²ÉÈ¡ÓÐЧµÄ´ëÊ©£¬Ôò»áÔì³É¹²Ïí×ÊÔ´µÄ»ìÂÒ£¡

À´Ð´¸öСÀý×Ó£¬´´½¨Á½¸öỊ̈߳¬ËüÃÇ·Ö±ð¶Ô¹²Ïí±äÁ¿ i ×ÔÔö 1 Ö´ÐÐ 1000 ´Î£¬ÈçÏ´úÂë

Õý³£À´Ëµ£¬i ±äÁ¿×îºóµÄÖµÊÇ 2000 £¬¿ÉÊDz¢·ÇÈç´Ë£¬ÎÒÃÇÖ´ÐÐÏ´úÂë¿´¿´½á¹û

½á¹û£º2000

½á¹û£º1855

ÔËÐÐÁËÁ½´Î£¬½á¹û·Ö±ðÊÇ1855¡¢2000£¬ÎÒÃÇ·¢ÏÖÿ´ÎÔËÐеĽá¹û²»Í¬£¬ÕâÔÚ¼ÆËã»úÀïÊDz»ÄÜÈÝÈ̵ģ¬ËäÈ»ÊÇС¸ÅÂʳöÏֵĴíÎ󣬵«ÊÇС¸ÅÂÊËüÒ»¶¨ÊǻᷢÉúµÄ¡£

»ã±àÖ¸Áî

ΪÁ˸ãÃ÷°×µ½µ×·¢ÉúÁËʲôÊÂÇ飬ÎÒÃDZØÐëÒªÁ˽â»ã±àÖ¸ÁîÖ´ÐУ¬ÒÔ i ¼Ó 1 ΪÀý×Ó£¬»ã±àÖ¸ÁîµÄÖ´Ðйý³ÌÈçÏÂ

ºÃ¼Ò»ï£¬Ò»¸ö¼Ó·¨¶¯×÷£¬ÔÚ C P U ÔËÐУ¬Êµ¼ÊÒªÖ´ÐÐ 3 ÌõÖ¸Áî¡£

ÏÖÔÚÄ£ÄâÏÂÏß³ÌAÓëÏß³ÌBµÄÔËÐУ¬¼ÙÉè´ËʱÄÚ´æ±äÁ¿ i µÄÖµÊÇ 0£¬Ïß³ÌA¼ÓÔØÄÚ´æµÄ i Öµµ½¼Ä´æÆ÷£¬¶Ô¼Ä´æÆ÷ i Öµ¼Ó 1£¬´Ëʱ i ÖµÊÇ 1£¬Õý×¼±¸Ö´ÐÐÏÂÒ»²½¼Ä´æÆ÷ i Öµ»ØÐ´Äڴ棬ʱ¼äƬʹÓÃÍêÁË£¬·¢ÉúÏß³ÌÉÏÏÂÎÄÇл»£¬±£´æÏ̵߳Ä˽ÓÐÐÅÏ¢µ½Ï߳̿ØÖÆ¿éT C P¡£

²Ù×÷ϵͳµ÷¶ÈÏß³ÌBÖ´ÐУ¬´ËʱµÄÄÚ´æ±äÁ¿ i ÒÀÈ»»¹ÊÇ 0£¬Ïß³ÌBÖ´ÐÐÓëÏß³ÌAÒ»ÑùµÄ²½Ö裬ËüºÜÐÒÔË£¬ÔÚʱ¼äƬʹÓÃÍêǰ£¬Ö´ÐÐÍêÁË¼Ó 1£¬×îÖÕ»ØÐ´Äڴ棬ÄÚ´æ±äÁ¿ i ÖµÊÇ 1¡£

Ïß³ÌBʱ¼äƬʹÓÃÍêºó£¬·¢ÉúÏß³ÌÉÏÏÂÎÄÇл»£¬»Øµ½Ïß³ÌAÉϴεÄ״̬¼ÌÐøÖ´ÐУ¬¼Ä´æÆ÷ÖÐµÄ i Öµ»ØÐ´Äڴ棬ÄÚ´æ±äÁ¿Ôٴα»ÉèÖÃ³É 1¡£

°´Àí˵£¬×îºóµÄ i ÖµÓ¦¸ÃÊÇ 2£¬µ«ÊÇÓÉÓÚ²»¿É¿ØµÄµ÷¶È£¬µ¼ÖÂ×îºó i ÖµÊÇ 1£¬ÏÂÃæÊÇÏß³ÌAÓëÏß³ÌBµÄÁ÷³Ìͼ

µÚÒ»²½£ºÄÚ´æÈ¡³ö i Öµ£¬¼ÓÔØ½ø¼Ä´æÆ÷

µÚ¶þ²½£º¶Ô¼Ä´æÆ÷ÄÚµÄ i Öµ¼Ó 1

µÚÈý²½£º¼Ä´æÆ÷ÄÚµÄ i ֵȡ³ö ¼ÓÔØ½øÄÚ´æ

С½á

ÕâÖÖÇé¿ö³ÆÎª¾ºÕùÌõ¼þ£¨race condition£©£¬¶àÏß³ÌÏ໥¾ºÕù²Ù×÷¹²Ïí×ÊԴʱ£¬ÓÉÓÚÔËÆø²»ºÃ£¬ÔÚÖ´Ðйý³ÌÖз¢ÉúÏß³ÌÉÏÏÂÎÄÇл»£¬×îºóµÃµ½´íÎóµÄ½á¹û£¬ÊÂʵÉÏ£¬Ã¿´ÎÔËÐж¼¿ÉÄܵõ½²»Í¬µÄ½á¹û£¬Òò´ËÊä³öµÄ½á¹û´æÔÚ²»È·¶¨ÐÔ£¨indeterminate£©¡£

»¥³âÓëͬ²½

ΪÁ˽â¾öÒò¾ºÕùÌõ¼þ³öÏÖµÄḬ̈߳²È«£¬²Ù×÷ϵͳÊÇͨ¹ý»¥³âÓëͬ²½À´½â¾ö´ËÀàÎÊÌâ¡£

»¥³â¸ÅÄî

¶àÏß³ÌÖ´Ðй²Ïí±äÁ¿µÄÕâ¶Î´úÂë¿ÉÄܻᵼÖ¾ºÕù״̬£¬Òò´ËÎÒÃǽ«´Ë¶Î´úÂë³ÆÎªÁÙ½çÇø£¨critical section£©£¬ËüÊÇÖ´Ðй²Ïí×ÊÔ´µÄ´úÂëÆ¬¶Î£¬Ò»¶¨²»Äܸø¶àÏß³ÌͬʱִÐС£

ËùÒÔÎÒÃÇÏ£ÍûÕâ¶Î´úÂëÊÇ»¥³â£¨mutualexclusion£©µÄ£¬Ò²¾Í˵ִÐÐÁÙ½çÇø£¨critical section£©´úÂë¶ÎµÄÖ»ÄÜÓÐÒ»¸öỊ̈߳¬ÆäËûÏß³Ì×èÈûµÈ´ý£¬´ïµ½ÅŶÓЧ¹û¡£

»¥³â²¢²»Ö»ÊÇÕë¶Ô¶àÏ̵߳ľºÕùÌõ¼þ£¬Í¬Ê±»¹¿ÉÓÃÓÚ¶à½ø³Ì£¬±ÜÃâ¹²Ïí×ÊÔ´»ìÂÒ¡£

ͬ²½¸ÅÄî

»¥³â½â¾öÁË¡¸¶à½ø³Ì/Ï̡߳¹¶ÔÁÙ½çÇøÊ¹ÓõÄÎÊÌ⣬µ«ÊÇËüûÓнâ¾ö¡¸¶à½ø³Ì/Ï̡߳¹Ð­Í¬¹¤×÷µÄÎÊÌâ

ÎÒÃǶ¼ÖªµÀÔÚ¶àÏß³ÌÀÿ¸öÏß³ÌÒ»¶¨ÊÇ˳ÐòÖ´Ðеģ¬ËüÃǸ÷×Ô¶ÀÁ¢£¬ÒÔ²»¿ÉÔ¤ÖªµÄËÙ¶ÈÏòÇ°ÍÆ½ø£¬µ«ÓÐʱºòÎÒÃÇÏ£Íû¶à¸öÏß³ÌÄÜÃÜÇкÏ×÷£¬ÒÔʵÏÖÒ»¸ö¹²Í¬µÄÈÎÎñ¡£

Ëùνͬ²½£¬¾ÍÊÇ¡¸¶à½ø³Ì/Ï̼߳䡹ÔÚһЩ¹Ø¼üµãÉÏ¿ÉÄÜÐèÒª»¥ÏàµÈ´ýÓ뻥ͨÏûÏ¢£¬ÕâÖÖÏà»¥ÖÆÔ¼µÄµÈ´ýÓ뻥ͨÐÅÏ¢³ÆÎª¡¸½ø³Ì/Ï̡߳¹Í¬²½¡£

¾Ù¸öÀý£¬ÓÐÁ½¸ö½ÇÉ«·Ö±ðÊÇÑз¢¡¢ÖÊÁ¿¹Ü¿Ø£¬ÖÊÁ¿¹Ü¿Ø²âÊÔ¹¦ÄÜ£¬ÐèÒªµÈÑС¸·¢Íê³É¿ª·¢¡¹£¬Ñз¢ÒªÐÞbugÒ²ÒªµÈÖÊÁ¿¹Ü¿Ø¡¸²âÊÔÍê³ÉÌá½»B U G¡¹£¬Õý³£Á÷³ÌÊÇÑз¢Íê³É¿ª·¢£¬Í¨ÖªÖÊÁ¿¹Ü¿Ø½øÐвâÊÔ£¬ÖÊÁ¿¹Ü¿Ø²âÊÔÍê³É£¬Í¨ÖªÑз¢ÈËÔ±ÐÞ¸´bug¡£

»¥³âÓëͬ²½µÄÇø±ð

»¥³â£ºÄ³Ò»×ÊԴͬʱֻÔÊÐíÒ»¸ö·ÃÎÊÕß¶ÔÆä½øÐзÃÎÊ£¬¾ßÓÐΨһÐÔºÍÅÅËüÐÔ¡£µ«»¥³âÎÞ·¨ÏÞÖÆ·ÃÎÊÕß¶Ô×ÊÔ´µÄ·ÃÎÊ˳Ðò£¬¼´·ÃÎÊÊÇÎÞÐòµÄ¡£

¡¸²Ù×÷ A ºÍ²Ù×÷ B ²»ÄÜÔÚͬһʱ¿ÌÖ´ÐС¹

ͬ²½£º»¥³âµÄ»ù´¡ÉÏ£¬Í¨¹ýÆäËü»úÖÆÊµÏÖ·ÃÎÊÕß¶Ô×ÊÔ´µÄÓÐÐò·ÃÎÊ¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬Í¬²½ÒѾ­ÊµÏÖÁË»¥³â¡£

¡¸²Ù×÷ A Ó¦ÔÚ²Ù×÷ B ֮ǰִÐС¹£¬¡¸²Ù×÷ C ±ØÐëÔÚ²Ù×÷ A ºÍ²Ù×÷ B ¶¼Íê³ÉÖ®ºó²ÅÄÜÖ´ÐС¹

ÏÔÈ»£¬Í¬²½ÊÇÒ»ÖÖ¸üΪ¸´ÔӵĻ¥³â£¬¶ø»¥³âÊÇÒ»ÖÖÌØÊâµÄͬ²½¡£Ò²¾ÍÊÇ˵»¥³âÊÇÁ½¸öÏß³ÌÖ®¼ä²»¿ÉÒÔͬʱÔËÐУ¬ËûÃÇ»áÏ໥Åų⣬±ØÐëµÈ´ýÒ»¸öÏß³ÌÔËÐÐÍê±Ï£¬ÁíÒ»¸ö²ÅÄÜÔËÐУ¬¶øÍ¬²½Ò²ÊDz»ÄÜͬʱÔËÐУ¬µ«ËûÊDZØÐëÒª°´ÕÕijÖÖ´ÎÐòÀ´ÔËÐÐÏàÓ¦µÄỊ̈߳¨Ò²ÊÇÒ»ÖÖ»¥³â£©£¡

»¥³âÓëͬ²½µÄʵÏÖ

»¥³âÓëͬ²½¿ÉÒÔ±£Ö¤¡¸¶à½ø³Ì/Ï̼߳äÕýȷЭ×÷¡¹ £¬µ«ÊÇ»¥³âÓëͬ²½½ö½öÖ»ÊǸÅÄ²Ù×÷ϵͳ±ØÐëÒªÌṩ¶ÔÓ¦µÄʵÏÖ£¬Õë¶Ô»¥³âÓëͬ²½µÄʵÏÖÓÐÏÂÃæÁ½ÖÖ

Ëø£º¼ÓËø¡¢½âËø²Ù×÷£¨»¥³â£©

ÐźÅÁ¿£ºP¡¢V ²Ù×÷£¨Í¬²½£©

ÕâÁ½¸öÖÖ·½Ê½¶¼¿ÉÒÔʵÏÖ¡¸¶à½ø³Ì/Ï̡߳¹»¥³â£¬ÐźÅÁ¿±ÈËøµÄ¹¦ÄܸüǿһЩ£¬Ëü»¹¿ÉÒÔ·½±ãµØÊµÏÖ¡¸¶à½ø³Ì/Ï̡߳¹Í¬²½¡£

Ëø

¹ËÃû˼Ò壬¸øÁÙ½çÇøÉÏÒ»°ÑËø£¬ÈκνøÈëÁÙ½çÇø£©µÄỊ̈߳¬±ØÐëÏÈÖ´ÐмÓËø²Ù×÷£¬¼ÓËø³É¹¦£¬²ÅÄܽøÈëÁÙ½çÇø£¬ÔÚÀ뿪ÁÙ½çÇøÊ±ÔÙÊÍ·ÅËø£¬´ïµ½»¥³âµÄЧ¹û¡£

ËøµÄʵÏÖ·½Ê½ÓÖ·ÖΪ¡¸Ã¦µÈ´ýËø¡¹ºÍ¡¸ÎÞæµÈ´ýËø¡¹

æµÈËø

¼ì²é²¢ÉèÖã¨test-and-set-lock£¬TSL£©ÊÇÒ»ÖÖ²»¿ÉÖжϵÄÔ­×ÓÔËË㣬ËüÊôÓÚÔ­×Ó²Ù×÷Ö¸Á¿ÉÒÔͨ¹ýËüÀ´ÊµÏÖæµÈËø£¨×ÔÐýËø£©¡£

test-and-set-lock Ö¸Áîα´úÂë

¼ì²é²¢ÉèÖÃ×öÁËÈçϼ¸¸ö²½Öè

¼ì²é¾ÉÖµÊÇ·ñÏàµÈ

ÏàµÈÉèÖÃÐÂÖµ£¬·µ»ØÔ­¾ÉÖµ£¨³É¹¦£©

²»ÏàµÈ£¬ÎÞÈκβÙ×÷£¬Ö±½Ó·µ»ØÔ­¾ÉÖµ£¨Ê§°Ü£©

ÉÏÃæµÄ²½Ö裬°ÑËü¿´³ÉÒ»²½²¢¾ß±¸Ô­×ÓÐÔ£¬Ô­×ÓÐÔµÄÒâ˼ÊÇָȫ²¿Ö´Ðлò¶¼²»Ö´ÐУ¬²»»á³öÏÖÖ´Ðе½Ò»°ëµÄÖмä״̬.

α´úÂëtestAndSetLockʵÏÖæµÈËø£¨×ÔÐýËø£©

ÏÂÃæÁ½ÖÖ³¡¾°ÔËÐÐ

µ¥Ị̈߳º¼ÙÉèÒ»¸öÏ̷߳ÃÎÊÁÙ½çÇø£¬Ö´ÐÐ getLock ·½·¨£¬¼ì²é¾ÉÖµ 0 ͨ¹ý£¬¸üÐÂÔ­¾ÉÖµ 0 ΪÐÂÖµ 1£¬·µ»ØÔ­¾ÉÖµ 0£¬»ñÈ¡Ëø³É¹¦£¬À뿪ÁÙ½çÇøÊ±£¬Ö´ÐÐ unLock ·½·¨£¬¼ì²é¾ÉÖµ 1 ͨ¹ý£¬¸üÐÂÔ­¾ÉÖµ 1 ΪÐÂÖµ 0£¬ÊÍ·ÅËø³É¹¦¡£

¶àỊ̈߳º¼ÙÉèÁ½¸öỊ̈߳¬Ïß³ÌA·ÃÎÊÁÙ½çÇø£¬Ö´ÐÐ getLock ·½·¨£¬¼ì²é¾ÉÖµ 0 ͨ¹ý£¬¸üÐÂÔ­¾ÉÖµ 0 ΪÐÂÖµ 1£¬·µ»ØÔ­¾ÉÖµ 0£¬»ñÈ¡Ëø³É¹¦£¬´ËʱÏß³ÌBÖ´ÐÐ getLock ·½·¨£¬¾ÉÖµ¼ì²éʧ°Ü£¬»ñÈ¡ËøÊ§°Ü£¬Ò»Ö±Ñ­»·Ö±µ½¸üгɹ¦ÎªÖ¹£¬µ±Ïß³ÌAÀ뿪ÁÙ½çÇøÊ±£¬Ö´ÐÐ unLock ·½·¨£¬¼ì²é¾ÉÖµ 1 ͨ¹ý£¬¸üÐÂÔ­¾ÉÖµ 1 ΪÐÂÖµ 0£¬ÊÍ·ÅËø³É¹¦£¬Ïß³ÌB»ñÈ¡Ëø³É¹¦¡£

µ±»ñÈ¡²»µ½ËøÊ±£¬Ï߳̾ͻáÒ»Ö± wile Ñ­»·£¬²»×öÈκÎÊÂÇ飬ËùÒԾͱ»³ÆÎªÃ¦µÈ´ýËø£¬Ò²±»³ÆÎª×ÔÐýËø¡£

ÕâÊÇ×î¼òµ¥µÄËø£¬Ò»Ö±×ÔÐý£¬ÀûÓà C P U ÖÜÆÚ£¬Ö±µ½Ëø¿ÉÓá£ÔÚµ¥´¦ÀíÆ÷ÉÏ£¬ÐèÒªÇÀռʽµÄµ÷¶ÈÆ÷£¨¼´²»¶Ïͨ¹ýʱÖÓÖжÏÒ»¸öỊ̈߳¬ÔËÐÐÆäËûỊ̈߳©¡£·ñÔò£¬×ÔÐýËøÔÚ C P U ÉÏÎÞ·¨Ê¹Óã¬ÒòΪһ¸ö×ÔÐýµÄÏß³ÌÓÀÔ¶²»»á·ÅÆú C P U¡£

ÎÞæµÈËø

¹ËÃû˼Ò壬ÎÞæµÈËø²»ÐèÒªÖ÷¶¯×ÔÐý£¬±»¶¯µÈ´ý»½ÐѼ´¿É£¬ÔÚûÓлñÈ¡µ½ËøµÄʱºò£¬¾Í°Ñ¸ÃÏ̼߳ÓÈëµ½µÈ´ý¶ÓÁУ¬Èóö C P U ¸øÆäËûỊ̈߳¬ÆäËûÏß³ÌÊÍ·ÅËøÊ±£¬Ôٴӵȴý¶ÓÁл½ÐѸÃÏ̡߳£

Á½ÖÖËøµÄʵÏÖ¶¼ÊÇ»ùÓÚ¼ì²é²¢ÉèÖã¨test-and-set-lock£¬TSL£©£¬ÉÏÃæÖ»ÊǼòµ¥µÄα´úÂ룬ʵ¼ÊÉϲÙ×÷ϵͳµÄʵÏÖ»á¸ü¸´ÔÓ£¬µ«ÊÇ»ù±¾Ë¼ÏëÓë´óÖÂÁ÷³Ì»¹ÊÇÓë±¾ÀýÒ»Ñù¡£

ÐźÅÁ¿

²Ù×÷ϵͳÖÐЭµ÷¡¸¶àÏß³Ì/½ø³Ì¡¹¹²Í¬ÅäºÏ¹¤×÷£¬¾ÍÊÇͨ¹ýÐźÅÁ¿ÊµÏֵģ¬Í¨³£ÐźÅÁ¿´ú±í¡¸×ÊÔ´ÊýÁ¿¡¹£¬¶ÔÓ¦Ò»¸öÕûÐÍ£¨s e n£©±äÁ¿£¬»¹ÓÐÁ½¸öÔ­×Ó²Ù×÷µÄϵͳµ÷Óú¯ÊýÀ´¿ØÖÆ¡¸×ÊÔ´ÊýÁ¿¡¹¡£

P ²Ù×÷£º½« s e n ¼õ 1£¬Ïà¼õºó£¬Èç¹û s e n < 0 £¬Ôò½ø³Ì/Ï߳̽øÈë×èÈûµÈ´ý£¬·ñÔò¼ÌÐø£¬P ²Ù×÷¿ÉÄÜ»á×èÈû

V ²Ù×÷£º½« s e n ¼Ó 1 £¬Ïà¼Óºó£¬Èç¹û s e n <= 0£¬»½ÐѵȴýÖеĽø³Ì/Ị̈߳¬V ²Ù×÷²»»á×èÈû

P V²Ù×÷±ØÐëÊdzɶԳöÏÖ£¬µ«ÊÇûÓÐ˳ÐòÒªÇó£¬Ò²¾Í˵Äã¿ÉÒÔP V»òV P¡£

¾Ù¸öÀý×Ó£¬×î½üйڲ¡¶¾ÓÖ³öÀ´µ·ÂÒÁË£¬ÎªÁË×ÔÉí°²È«£¬´ó¼Ò¶¼È¥´òÒßÃ磬ÒòΪҽÉúÖ»ÓÐÁ½Î»£¨Ï൱ÓÚ2¸ö×ÊÔ´µÄÐźÅÁ¿£©£¬ËùÒÔͬʱֻÄÜΪÁ½¸öÈ˽ÓÖÖÒßÃ磬¹ý³ÌÈçÏÂͼ

ÐźÅÁ¿µÈÓÚ 0 ʱ£¬´ú±íÎÞ×ÊÔ´¿ÉÓÃ

ÐźÅÁ¿Ð¡ÓÚ 0 ʱ£¬´ú±íÓÐÏß³ÌÔÚ×èÈû

ÐźÅÁ¿´óÓÚ 0 ʱ£¬´ú±í×ÊÔ´¿ÉÓÃ

ʹÓÃα´úÂëʵÏÖP V ÐźÅÁ¿

P V²Ù×÷µÄº¯ÊýÊÇÓɲÙ×÷ϵͳ¹ÜÀíºÍʵÏֵģ¬ËùÒÔ P V º¯ÊýÊǾßÓÐÔ­×ÓÐԵġ£

ʵ¼ù

ÐźÅÁ¿»¹ÊDZȽÏÓÐÒâ˼µÄ£¬ÕâÀïÀ´×ö¼¸¸öʵ¼ù£¬¼ÓÉî´ó¼Ò¶ÔÐźÅÁ¿µÄÀí½â£¬Êµ¼ùµÄÄÚÈÝ·Ö±ðÊÇ

ÐźÅÁ¿ÊµÏÖ»¥³â

ÐźÅÁ¿ÊµÏÖʼþͬ²½

ÐźÅÁ¿ÊµÏÖÉú²úÕßÓëÏû·ÑÕß

»¥³â

ʹÓÃÐźÅÁ¿ÊµÏÖ»¥³â·Ç³£¼òµ¥£¬ÐźÅÁ¿ÊýÁ¿Îª1£¬Ï߳̽øÈëÁÙ½çÇø½øÐÐ P ²Ù×÷£¬À뿪ÁÙ½çÇø½øÐÐ V ²Ù×÷¡£

ʼþͬ²½

ÒÔÇ°ÃæËµµÄÑз¢¡¢ÖÊÁ¿¹Ü¿ØÏß³ÌΪÀý×Ó£¬ÊµÏÖʼþͬ²½µÄЧ¹û£¬Î±´úÂëÈçÏÂ

Ê×ÏȳéÏó³öÁ½¸öÐźÅÁ¿£¬¡¸ÊÇ·ñÄÜÌá²â¡¹Ó롸ÊÇ·ñÄÜÐÞBUG¡¹£¬ËüÃÇĬÈ϶¼ÊÇ·ñ£¬Ò²¾ÍÊÇ 0£¬¹Ø¼üµã¾ÍÊǶÔÁ½¸öÐźÅÁ¿½øÐÐ P V ²Ù×÷

ÖÊÁ¿¹Ü¿ØÏß³ÌѯÎÊ¿ª·¢Ïß³ÌÓÐûÓÐÍê³É¿ª·¢£¬Ö´ÐÐ P ²Ù×÷ p(this.rDSemaphore)

Èç¹ûûÓÐÍê³É¿ª·¢£¬this.rDSemaphore ¼õ 1 ½á¹ûΪ -1£¬ÖÊÁ¿¹Ü¿ØÏß³Ì×èÈûµÈ´ý»½ÐÑ£¨µÈºóÐøÑз¢Ï߳̽øÐÐ V ²Ù×÷£©

Èç¹ûÍê³É¿ª·¢£¬ËµÃ÷Ñз¢Ïß³ÌÏÈÖ´ÐÐ V ²Ù×÷ v(this.rDSemaphore) Íê³É¿ª·¢£¬this.rDSemaphore ¼Ó 1 ½á¹û 1£¬´ËʱÖÊÁ¿¹Ü¿ØÏß³Ì P ²Ù×÷ this.rDSemaphore ¼õ 1 ½á¹û 0£¬½øÐкóÃæµÄÌá²â¹¤×÷

Ñз¢Ïß³ÌѯÎÊÖÊÁ¿¹Ü¿ØÏß³ÌÄܲ»ÄÜÐÞ¸´B U G£¬Ö´ÐÐ P ²Ù×÷ p(this.qualitySemaphore)

Èç¹û²»¿ÉÒÔÐÞ¸´B U G£¬this.qualitySemaphore ¼õ 1 ½á¹ûΪ -1£¬Ñз¢Ïß³Ì×èÈûµÈ´ý»½ÐÑ£¨µÈºóÐøÖÊÁ¿¹Ü¿ØÏß³ÌÖ´ÐÐ V ²Ù×÷£©

Èç¹û¿ÉÒÔÐÞ¸´B U G£¬ËµÃ÷ÖÊÁ¿¹Ü¿ØÏß³ÌÏÈÖ´ÐÐ V ²Ù×÷ v(this.qualitySemaphore) Ìá½»BUG£¬ this.qualitySemaphore ¼Ó 1 ½á¹ûΪ 1£¬´ËʱÑз¢Ïß³Ì P ²Ù×÷ this.qualitySemaphore ¼õ 1 ½á¹û 0£¬½øÐкóÃæµÄÐÞ¸´ B U G ²Ù×÷

Á÷³Ì

ÖÊÁ¿¹Ü¿ØÏß³ÌÖ´ÐÐ P ²Ù×÷ p(this.rDSemaphore) Äܲ»ÄÜÌá²â£¬this.rDSemaphore ¼õ 1 ½á¹ûÊÇ -1 £¬²»ÄܽøÐÐÌá²â£¬ÖÊÁ¿¹Ü¿ØÏß³Ì×èÈûµÈ´ý»½ÐÑ

Ñз¢Ïß³ÌÔËÐУ¬Ö´ÐÐ V ²Ù×÷ v(this.rDSemaphore) Íê³ÉÑз¢¹¦ÄÜ£¬this.rDSemaphore ¼Ó 1 ½á¹ûÊÇ 0£¬Í¨ÖªÖÊÁ¿¹Ü¿ØÏß³ÌÌá²â

Ñз¢Ï̼߳ÌÐøÖ´ÐÐ P ²Ù×÷ p(this.qualitySemaphore) Äܲ»ÄÜÐÞ¸´B U G£¬this.qualitySemaphor ¼õ 1 ½á¹ûÊÇ -1£¬²»ÄÜÐÞ¸´B U G£¬Ñз¢Ïß³Ì×èÈûµÈ´ý»½ÐÑ

ÖÊÁ¿¹Ü¿ØÏ̻߳½ÐѺó½øÐÐÌá²â£¬Ìá²âÍê±ÏÖ´ÐÐ V ²Ù×÷ v(this.qualitySemaphore) Íê³ÉÌá²âÓëÌá½»Ïà¹ØB U G£¬this.qualitySemaphore ¼Ó 1 ½á¹ûÊÇ 0£¬Í¨ÖªÑз¢Ï߳̽øÐÐB U GÐÞ¸´

Éú²úÕßÓëÏû·ÑÕß

Éú²úÕßÓëÏû·ÑÕßÊÇÒ»¸ö±È½Ï¾­µäµÄÏß³Ìͬ²½ÎÊÌ⣬ÎÒÃÇÏÈ·ÖÎöÏÂÓÐÄÇЩ½ÇÉ«

Éú²úÕߣºÉú²úʼþ·ÅÈ뻺³åÇø

Ïû·ÑÕߣº´Ó»º³åÇøÏû·Ñʼþ

»º³åÇø£º×°ÔØÊ¼þµÄÈÝÆ÷

ÎÊÌâ·ÖÎö¿ÉÒԵóö£º

ÈκÎʱ¿ÌÖ»ÄÜÓÐÒ»¸öÏ̲߳Ù×÷»º³åÇø£¬ËµÃ÷²Ù×÷»º³åÇøÊÇÁÙ½ç´úÂ룬ÐèÒª»¥³â

»º³åÇø¿Õʱ£¬Ïû·ÑÕß±ØÐëµÈ´ýÉú²úÕßÉú³ÉÊý¾Ý

»º³åÇøÂúʱ£¬Éú²úÕß±ØÐëµÈ´ýÏû·ÑÕßÈ¡³öÊý¾Ý

ͨ¹ýÎÊÌâ·ÖÎöÎÒÃÇ¿ÉÒÔ³éÏó³ö3¸öÐźÅÁ¿

»¥³âÐźÅÁ¿£º»¥³â·ÃÎÊ»º³åÇø£¬³õʼ»¯ 1

Ïû·ÑÕß×ÊÔ´ÐźÅÁ¿£º»º³åÇøÊÇ·ñÓÐʼþ£¬³õʼ»¯ 0£¬ÎÞʼþ

Éú²úÕßÐźÅÁ¿£º»º³åÇøÊÇ·ñÓпÕÎ»×°ÔØÊ¼þ£¬³õʼ»¯ N £¨»º³åÇø´óС£©

α´úÂëÈçÏÂ

¹Ø¼üµÄ P V ²Ù×÷ÈçÏÂ

Éú²úỊ̈߳¬ÔÚÍù»º³åÇø×°ÔØÊ¼þ֮ǰ£¬Ö´ÐÐ P ²Ù×÷ p(this.produceSemaphore) £¬»º³åÇø¿Õ²ÛÊýÁ¿¼õ 1£¬½á¹û < 0 ˵Ã÷ÎÞ¿Õ²Û£¬×èÈûµÈ´ý¡¸Ïû·ÑÏ̡߳¹»½ÐÑ£¬·ñÔòÖ´ÐкóÐøÂß¼­

²»ÂÛÊÇÉú²úÏ̻߳¹ÊÇÏû·ÑÏß³ÌÔÚ²Ù×÷»º³åÇø¶¼ÒªÖ´ÐÐ P V ÁÙ½çÇø²Ù×÷ p(this.mutexSemaphore) Óë v(this.mutexSemaphore)£¬ÕâÀï¾Í²»×ö¹ý¶à¸ÅÊöÁË

Ïû·ÑỊ̈߳¬ÔÚ´Ó»º´æÇøÏû·Ñʼþ֮ǰ£¬Ö´ÐÐ P ²Ù×÷ p(this.consumeSemaphore)£¬»º³åÇøÊ¼þÊýÁ¿¼õ 1£¬½á¹û < 0 ˵Ã÷»º³åÇøÎÞʼþÏû·Ñ£¬×èÈûµÈ´ý¡¸Éú²úÏ̡߳¹»½ÐÑ£¬·ñÖ´ÐкóÐøÂß¼­

Éú²úÏß³ÌÓëÏû·ÑỊ̈߳¬Ö´ÐÐÍê¡¸×°ÔØ/Ïû·Ñ¡¹ºó£¬¶¼Òª»½ÐѶÔÓ¦µÄ¡¸Éú²ú/Ïû·ÑÏ̡߳¹£¬Ö´ÐÐ V ²Ù×÷¡¸»º³åÇø¿Õ²Û¼Ó 1/»º³åÇøÊ¼þ¼Ó 1¡¹

 

 
   
2605 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢