शून्य एक्स () {ताला (& amp; m); जबकि (एक्स || वाई) रुको (एंड फार्पर, एंड एम); X ++; (मी & amp) अनलॉक; // डू एक्स सामान लॉक (& amp; m); एक्स --; प्रसारण (& amp; farpar); (मी & amp) अनलॉक; } डबल वाई () (लॉक (एंड एम); जबकि (x) रुको (और थर्पर, & amp; m); वाई ++; (मी & amp) अनलॉक; // डू वाई सामान लॉक (& amp; m); वाई -; प्रसारण (& amp; farpar); (मी & amp) अनलॉक; }
उपरोक्त कोड में, m
एक म्यूट एक्स है, और फ़ॉर्पर
हालत चर है मुझे बताया गया है कि यह गतिरोध की स्थिति पैदा कर सकता है, लेकिन मुझे नहीं पता कि यह कैसे हो सकता है। बीटीडब्लू, एक्स
लेखक, वाई
रीडर
<पी > आप मानसिक रूप से कार्यक्रम को आसानी से चला सकते हैं:
-
ताला
m
-
एक्स
लूप करते समय रहता है,y
के लिएवाई
-
Y
द्वारा लॉन्च करनाm
लेकिन म्यूट एक्स पहले से हीX
-
वाई
के द्वारा स्वामित्व में हैy
-
एक्स
हमेशा के लिए लूप
No comments:
Post a Comment