Ticket lock
કોમ્પ્યુટર વિજ્ઞાનમાં, ટિકિટ લોક એ સિંક્રોનાઇઝેશન મિકેનિઝમ અથવા લોકિંગ અલ્ગોરિધમ છે, જે સ્પિનલોકનો એક પ્રકાર છે જે એક્ઝેક્યુશનના કયા થ્રેડને નિર્ણાયક વિભાગમાં પ્રવેશવાની મંજૂરી છે તે નિયંત્રિત કરવા માટે "ટિકિટ" નો ઉપયોગ કરે છે. ઝાંખી ટિકિટ લોકની મૂળભૂત વિભાવના ટિકિટ કતાર વ્યવસ્થાપન પ્રણાલી જેવી જ છે. આ એવી પદ્ધતિ છે જેનો ઉપયોગ ઘણી બેકરીઓ અને વાનગીઓ ગ્રાહકોને લાઇનમાં ઊભા કર્યા વિના, તેઓ આવે તે ક્રમમાં સેવા આપવા માટે કરે છે. સામાન્ય રીતે, અમુક પ્રકારનું વિતરક હોય છે જેમાંથી ગ્રાહકો આગમન પર ક્રમિક ક્રમાંકિત ટિકિટ ખેંચે છે. વિતરક પાસે સામાન્ય રીતે તેની ઉપર અથવા તેની નજીક એક નિશાની હોય છે જેમાં "મહેરબાની કરીને સંખ્યા લો" જેવું કંઈક લખેલું હોય છે. સામાન્ય રીતે એક ગતિશીલ નિશાની પણ હોય છે, સામાન્ય રીતે ડિજિટલ, જે ટિકિટ નંબર દર્શાવે છે જે હવે આપવામાં આવી રહ્યો છે. દરેક વખતે જ્યારે આગામી ટિકિટ નંબર (ગ્રાહક) સેવા આપવા માટે તૈયાર હોય, ત્યારે "હવે સેવા આપી રહ્યું છે" નું ચિહ્ન વધારવામાં આવે છે અને નંબર પર કોલ કરવામાં આવે છે. આ તમામ રાહ જોનારા ગ્રાહકોને એ જાણવાની મંજૂરી આપે છે કે કતાર અથવા લાઇનમાં હજુ પણ કેટલા લોકો તેમની આગળ છે. આ પ્રણાલીની જેમ, ટિકિટ લોક એ ફર્સ્ટ ઇન ફર્સ્ટ આઉટ (એફઆઇએફઓ) કતાર આધારિત પદ્ધતિ છે. તે લોક એક્વિઝિશનની નિષ્પક્ષતાનો લાભ ઉમેરે છે અને નીચે પ્રમાણે કામ કરે છે; ત્યાં બે પૂર્ણાંક મૂલ્યો છે જે 0 થી શરૂ થાય છે. પ્રથમ કિંમત કતારની ટિકિટ છે, અને બીજી ભેટની ટિકિટ છે. કતારની ટિકિટ એ કતારમાં થ્રેડની સ્થિતિ છે, અને ડીક્યૂ ટિકિટ એ ટિકિટ અથવા કતારની સ્થિતિ છે, જેમાં હવે તાળું છે (હવે સેવા આપી રહ્યું છે). જ્યારે થ્રેડ આવે છે, ત્યારે તે પરમાણુ રીતે મેળવે છે અને પછી કતારની ટિકિટમાં વધારો કરે છે. આ ઓપરેશનની અણુતા બે થ્રેડોને એક સાથે સમાન ટિકિટ નંબર મેળવવામાં સક્ષમ થવા માટે જરૂરી છે. તે પછી તેની ટિકિટની કિંમતની સરખામણી, વૃદ્ધિ પહેલાં, ભેટની ટિકિટની કિંમત સાથે કરે છે. જો તેઓ સમાન હોય, તો થ્રેડને નિર્ણાયક વિભાગમાં પ્રવેશવાની મંજૂરી છે. જો તેઓ સમાન ન હોય, તો પછી બીજો થ્રેડ પહેલેથી જ નિર્ણાયક વિભાગમાં હોવો જોઈએ અને આ થ્રેડ વ્યસ્ત હોવો જોઈએ-રાહ જુઓ અથવા ઉપજ આપો. જ્યારે થ્રેડ તાળા દ્વારા નિયંત્રિત નિર્ણાયક વિભાગને છોડે છે, ત્યારે તે પરમાણુ રીતે ડીક્યૂ ટિકિટમાં વધારો કરે છે. આ આગામી રાહ જોવાના દોરાને, આગામી ક્રમિક ટિકિટ નંબર સાથે, નિર્ણાયક વિભાગમાં પ્રવેશવાની મંજૂરી આપે છે. લોક એક્વિઝિશનની નિષ્પક્ષતા લોક એક્વિઝિશનમાં નિષ્પક્ષતાની કલ્પના તે ક્રમને લાગુ પડે છે જેમાં થ્રેડો સફળતાપૂર્વક લોક મેળવે છે. જો અમુક પ્રકારની નિષ્પક્ષતા લાગુ કરવામાં આવે છે, તો તે અન્ય થ્રેડોની તરફેણમાં તાળું મેળવવામાં અસમર્થતાને કારણે લાંબા સમય સુધી થ્રેડનો અમલ થતો અટકાવે છે. નિષ્પક્ષતાની કોઈ બાંયધરી વિના, એવી પરિસ્થિતિ ઊભી થઈ શકે છે કે જ્યાં દોરી (અથવા બહુવિધ દોરી) અન્યની તુલનામાં અમલમાં મૂકવા માટે અપ્રમાણસર રીતે લાંબો સમય લાગી શકે છે. લોક એક્વિઝિશનમાં નિષ્પક્ષતાના અભાવને કારણે થ્રેડ કેવી રીતે વધુ પડતો વિલંબિત થઈ શકે છે તે બતાવવા માટે હવે એક સરળ ઉદાહરણ રજૂ કરવામાં આવશે. એક કેસ ધારો કે જ્યાં ત્રણ થ્રેડો, દરેક ત્રણ પ્રોસેસરોમાંથી એક પર એક્ઝિક્યુટ કરે છે, તે નીચેના સ્યુડોકોડ એક્ઝિક્યુટ કરે છે જે નિષ્પક્ષતા માટે કોઈ વિચારણા વિના લોકનો ઉપયોગ કરે છે. જ્યારે (1) {તાળું {. નિર્ણાયક વિભાગ.} તાળું મારો} હવે આગળ ત્રણ પ્રોસેસરો, P1, P2 અને P3 ની ભૌતિક ગોઠવણી ધારો, જે વહેંચાયેલ તાળા ચલના સ્થાન પર બિન-સમાન મેમરી ઍક્સેસ સમયમાં પરિણમે છે. ત્રણ પ્રોસેસરો માટે તાળા ચલ સુધી પહોંચવાનો સમય વધારવાનો ક્રમ P1 <P2 <P3 છે. તેથી P1 હંમેશા તાળું મેળવવા માટે સૌથી વધુ ફાયદાકારક હોય છે, ત્યારબાદ P2 આવે છે, જેમાં P3 સૌથી વધુ વંચિત હોય છે. નિષ્પક્ષતાની બાંયધરીની ગેરહાજરીમાં આ પરિસ્થિતિ કેવી રીતે ભૂખમરા તરફ દોરી જાય છે તે આ ત્રણ પ્રોસેસરો દ્વારા ઉપરોક્ત સ્યુડોકોડના અમલના નીચેના ચિત્રમાં દર્શાવવામાં આવ્યું છે. શરૂઆતમાં, તાળું મુક્ત હોય છે અને ત્રણેય પ્રોસેસરો એક સાથે તાળું મેળવવાનો પ્રયાસ કરે છે (સમય 1). P1 પાસે તાળા સુધી પહોંચવાનો સૌથી ઝડપી સમય હોવાને કારણે, તે તેને પહેલા પ્રાપ્ત કરે છે અને નિર્ણાયક વિભાગમાં પ્રવેશ કરે છે. પી 2 અને પી 3 હવે સ્પિન કરે છે જ્યારે પી 1 નિર્ણાયક વિભાગ (સમય 2) માં છે. નિર્ણાયક વિભાગ (સમય 3) માંથી બહાર નીકળ્યા પછી, પી1 તાળું મુક્ત કરીને એક તાળું ખોલે છે. પી2 પાસે પી3 કરતાં તાળા સુધી ઝડપી પહોંચ હોવાથી, તે આગામી તાળા મેળવે છે અને નિર્ણાયક વિભાગ (સમય 4) માં પ્રવેશ કરે છે. જ્યારે પી 2 નિર્ણાયક વિભાગમાં હોય છે, ત્યારે પી 1 ફરી એકવાર તાળું મેળવવાનો પ્રયાસ કરે છે પરંતુ (સમય 5) કરી શકતો નથી, જે તેને પી 3 સાથે રાહ જોવાની ફરજ પાડે છે. એકવાર પી 2 નિર્ણાયક વિભાગને સમાપ્ત કરે છે અને અનલૉક જારી કરે છે, પી 1 અને પી 3 બંને વારાફરતી તેને ફરી એકવાર મેળવવાનો પ્રયાસ કરે છે (સમય 6). પરંતુ પી 1, તેના ઝડપી ઍક્સેસ સમય સાથે ફરીથી જીતે છે, આમ નિર્ણાયક વિભાગ (સમય 7) માં પ્રવેશ કરે છે. પી3નું તાળું મેળવવામાં અસમર્થ હોવાની આ પેટર્ન જ્યાં સુધી પી1 અથવા પી2 તેને મેળવવાનો પ્રયાસ કરવાનું બંધ ન કરે ત્યાં સુધી અનિશ્ચિત સમય સુધી ચાલુ રહેશે. આ અમુક સંજોગોમાં લોક એક્વિઝિશનમાં અમુક સ્તરની નિષ્પક્ષતાની ખાતરી કરવાની જરૂરિયાતને સમજાવે છે. બધા તાળાઓમાં એવી પદ્ધતિઓ હોતી નથી કે જે કોઈપણ સ્તરની નિષ્પક્ષતાની ખાતરી આપે, જેનાથી ઉપર દર્શાવેલી પરિસ્થિતિઓ જેવી જ પરિસ્થિતિઓની સંભાવના રહે. કોઈપણ નિષ્પક્ષતાની બાંયધરીનો અમલ ન કરતા તાળાઓના ઉદાહરણો માટે નીચે તાળાઓની સરખામણી વિભાગ જુઓ. ટિકિટ લોકનું અમલીકરણ નોન-યુનિફોર્મ મેમરી આર્કિટેક્ચર (એનયુએમએ) પ્રણાલીમાં લોક અમલીકરણ હોવું મહત્વપૂર્ણ છે જે લોક સંપાદનની અમુક સ્તરની નિષ્પક્ષતાની બાંયધરી આપે છે. ટિકિટ લોક એ સ્પિનલોકનું અમલીકરણ છે જે આ ઇચ્છિત લક્ષણને ઉમેરે છે. નીચેનો સ્યુડોકોડ તાળું શરૂ કરવા, તાળું મેળવવા અને તાળું છોડવાની કામગીરી દર્શાવે છે. ટિકિટલોક _ એક્વાયર્ન પર કૉલ કોડના નિર્ણાયક વિભાગથી આગળ હશે અને ટિકિટલોક _ રિલીઝ તેને અનુસરશે. દરેક પ્રોસેસર દરેક પ્રોસેસરના માય-ટિકિટના મૂલ્ય દ્વારા તેના વળાંક પર નજર રાખશે. યાન સોલિહિનનું સ્યુડોકોડ ઉદાહરણ આકૃતિ below.ticketLock_init (પૂર્ણાંક * નેક્સ્ટ ટિકિટ, પૂર્ણાંક * નેક્સ્ટ ટિકિટ) માં સૂચિબદ્ધ છે {* હવે _ સર્વિંગ = * નેક્સ્ટ ટિકિટ = 0;} ટિકિટલોક _ એક્વાયર્ન (પૂર્ણાંક * નેક્સ્ટ ટિકિટ, પૂર્ણાંક * નેક્સ્ટ ટિકિટ) {માય _ ટિકિટ = ફેચ _ એન્ડ _ ઇન્ક (નેક્સ્ટ ટિકિટ); જ્યારે (* હવે _ સર્વિંગ! = માય _ ટિકિટ) {} ટિકિટલોક _ રિલીઝ (પૂર્ણાંક * નેક્સ્ટ _ સર્વિંગ) {+ + * નેક્સ્ટ _ સર્વિંગ;} ઉપરના સ્યુડોકોડને અનુસરીને આપણે જોઈ શકીએ છીએ કે દર વખતે જ્યારે પ્રોસેસર ટિકિટલોક _ એક્વાયર્ન () સાથે તાળું મેળવવાનો પ્રયાસ કરે છે, ત્યારે મેળવે છે અને બોલાવે છે. એ નોંધવું અગત્યનું છે કે લાવવું અને વધારો એટોમિક રીતે કરવામાં આવે છે, જેનાથી ઍક્સેસ પર કોઈ અન્ય સહવર્તી પ્રયાસોને મંજૂરી આપવામાં આવતી નથી. એકવાર મારી ટિકિટ પ્રાપ્ત થઈ જાય પછી, દરેક થ્રેડ વાઇલ લૂપમાં ફરશે જ્યારે હવે સેવા આપવી એ તેની મારી ટિકિટ બરાબર નથી. એકવાર હવે _ સર્વિંગ આપેલ થ્રેડની મારી _ ટિકિટની બરાબર થઈ જાય પછી તેમને ટિકિટલોક _ એક્વાયર્ન () થી પાછા ફરવાની અને કોડના નિર્ણાયક વિભાગમાં પ્રવેશવાની મંજૂરી આપવામાં આવે છે. કોડના નિર્ણાયક વિભાગ પછી, થ્રેડ ટિકિટલોક _ રિલીઝ () કરે છે જે હવે _ સર્વિંગમાં વધારો કરે છે. આ આગામી ક્રમિક માય _ ટિકિટ સાથેના થ્રેડને ટિકિટલોક _ એક્વાયર્ન () માંથી બહાર નીકળવા અને નિર્ણાયક વિભાગ દાખલ કરવાની મંજૂરી આપે છે. માય _ ટિકિટ મૂલ્યો તાળા પર થ્રેડ આગમનના ક્રમમાં હસ્તગત કરવામાં આવે છે, તેથી તાળા પછીનું સંપાદન પણ આ જ ક્રમમાં હોવાની ખાતરી આપવામાં આવે છે. આમ, લોક એક્વિઝિશનની નિષ્પક્ષતા સુનિશ્ચિત કરવામાં આવે છે, જે એફ. આઈ. એફ. ઓ. ના આદેશને લાગુ કરે છે. નીચેનું કોષ્ટક નિર્ણાયક વિભાગમાં પ્રવેશ માટે સ્પર્ધા કરતા ચાર પ્રોસેસરો (પી1, પી2, પી3, પી4) સાથે સિસ્ટમમાં ટિકિટ લોક ઇન એક્શનનું ઉદાહરણ દર્શાવે છે. "ક્રિયા" સ્તંભને અનુસરીને, ઉપરોક્ત સ્યુડોકોડ પર આધારિત પરિણામ જોઇ શકાય છે. દરેક પંક્તિ માટે, દર્શાવેલ ચલ મૂલ્યો તે છે જે સૂચવેલ ક્રિયા (ઓ) પૂર્ણ થયા પછી છે. ઉદાહરણમાંથી નોંધવા જેવો મુખ્ય મુદ્દો એ છે કે તમામ ચાર પ્રોસેસરો દ્વારા લોક પ્રાપ્ત કરવાના પ્રારંભિક પ્રયાસોથી પરિણામ આવે છે કે પ્રથમ વ્યક્તિ ખરેખર લોક મેળવે છે. પછીના તમામ પ્રયાસો, જ્યારે પ્રથમ હજુ પણ તાળું ધરાવે છે, ત્યારે નિર્ણાયક વિભાગમાં તેમના વારોની રાહ જોઈ રહેલા પ્રોસેસરોની કતાર રચવાનું કામ કરે છે. આ પછી દરેકને વળાંકમાં તાળું મળે છે, જે આગળના ધારકને જતા જતા તેને મેળવવાની મંજૂરી આપે છે. એ પણ નોંધ લો કે અન્ય પ્રોસેસરો દ્વારા લોક એક્વાઇર/રિલીઝના ક્રમ દરમિયાન અન્ય પ્રોસેસર કોઈપણ સમયે આવી શકે છે, અને ફક્ત તેના વારોની રાહ જુએ છે. તાળુંનો ઉપયોગ કરતા પહેલા પ્રથમ પગલું એ તમામ તાળું ચલોનું આરંભીકરણ છે (પંક્તિ 1). નેક્સ્ટ _ ટિકિટ અને નાઉ _ સર્વિંગને 0 થી શરૂ કરવાથી ખાતરી થાય છે કે પ્રથમ થ્રેડ કે જે તાળું મેળવવાનો પ્રયાસ કરે છે તેને ટિકિટ 0 મળશે, આમ તેની ટિકિટ હમણાં _ સર્વિંગ સાથે મેળ ખાતી હોવાને કારણે તાળું પ્રાપ્ત થશે. તેથી જ્યારે P1 તાળું મેળવવાનો પ્રયાસ કરે છે ત્યારે તે તરત જ સફળ થાય છે અને આગામી ટિકિટને વધારીને 1 (પંક્તિ 2) કરવામાં આવે છે. જ્યારે P3 તાળું મેળવવાનો પ્રયાસ કરે છે ત્યારે તેને તેની મારી ટિકિટ માટે 1 મળે છે, આગામી ટિકિટ વધારીને 2 કરવામાં આવે છે, અને તેને રાહ જોવી પડશે કારણ કે હવે સેવારત હજુ પણ 0 છે (પંક્તિ 3). આગળ, જ્યારે પી2 તાળું મેળવવાનો પ્રયાસ કરે છે ત્યારે તેને તેની માય _ ટિકિટ માટે 2 મળે છે, નેક્સ્ટ _ ટિકિટ વધારીને 3 કરવામાં આવે છે, અને તેને પણ રાહ જોવી પડશે કારણ કે હવે _ સર્વિંગ હજુ પણ 0 (પંક્તિ 4) છે. P1 હવે 1 ને વધારીને તાળું મુક્ત કરે છે, આમ P3 ને તેના 1 (પંક્તિ 5) ના માય-ટિકિટ મૂલ્યને કારણે તેને પ્રાપ્ત કરવાની મંજૂરી આપે છે. હવે P3 તાળું મુક્ત કરે છે, હવે 2 સુધી વધારીને, P2 ને તેને હસ્તગત કરવાની મંજૂરી આપે છે (પંક્તિ 6). જ્યારે પી2 પાસે તાળું હોય છે, ત્યારે પી4 તેને મેળવવાનો પ્રયાસ કરે છે, 3નું માય-ટિકિટ મૂલ્ય મેળવે છે, આગલી-ટિકિટને 4 સુધી વધારી દે છે, અને રાહ જોવી પડશે કારણ કે હવે-સેવા હજુ પણ 2 છે (પંક્તિ 7). જ્યારે પી2 તાળું છોડે છે, ત્યારે તે હવે 3 સુધી વધે છે, જેનાથી પી4 તેને મેળવી શકે છે (પંક્તિ 8). છેવટે, P4 તાળું મુક્ત કરે છે, હવે 4 (પંક્તિ 9) માં વધારો કરે છે. હાલમાં કોઈ વેઇટિંગ થ્રેડ પાસે આ ટિકિટ નંબર નથી, તેથી આગામી થ્રેડ તેના ટિકિટ માટે 4 મેળવશે અને તરત જ તાળું મેળવશે. તાળાઓની સરખામણી લિનક્સ કર્નલના અમલીકરણમાં આધુનિક મશીનો પર સરળ પરીક્ષણ અને સેટ અથવા વિનિમય આધારિત સ્પિનલોક અલ્ગોરિધમ્સ કરતાં ઓછી વિલંબતા હોઈ શકે છે. વિવિધ પ્રકારના સ્પિન આધારિત તાળાઓની સરખામણી કરતી વખતે નીચેના કોષ્ટકનો વિચાર કરો. વધુ મૂળભૂત લોકીંગ મિકેનિઝમ્સમાં અદ્યતન લોકીંગ મિકેનિઝમ્સ કરતાં ઓછી અનિચ્છનીય વિલંબતા હોય છે. ફાયદા અન્ય સ્પિનલોક અલ્ગોરિધમ્સ પર ટિકિટ લોકનો એક ફાયદો એ છે કે તે વાજબી છે. જેમ જેમ ડીક્યૂ ટિકિટ પૂર્ણાંક વધે છે તેમ રાહ જોવાના થ્રેડોની પ્રક્રિયા ફર્સ્ટ-ઇન-ફર્સ્ટ-આઉટ ધોરણે કરવામાં આવે છે, આમ ભૂખમરાને અટકાવવામાં આવે છે. ટિકિટ લોક અલ્ગોરિધમ ગર્જના કરતી ટોળાની સમસ્યાને પણ અટકાવે છે કારણ કે એક સમયે માત્ર એક જ થ્રેડ નિર્ણાયક વિભાગમાં પ્રવેશવાનો પ્રયાસ કરે છે. સંગ્રહ એ જરૂરી સમસ્યા નથી કારણ કે બધા થ્રેડો એક ચલ પર ફરે છે, એરે-આધારિત કતારના તાળાઓ (એબીક્યુએલ) થી વિપરીત, જેમની પાસે એરેના વ્યક્તિગત ઘટકો પર થ્રેડો સ્પિન હોય છે. ગેરફાયદા એક ગેરલાભ એ છે કે તાળું છોડવામાં આવે તે પહેલાં તમામ થ્રેડો જે મૂલ્ય પર ફરતા હોય તે મૂલ્યને વાંચવા અને ચકાસવા માટે જરૂરી વધારાની સૂચનાઓને કારણે વધુ અનિચ્છનીય વિલંબતા હોય છે. ટિકિટ લોકનો બીજો મોટો ગેરલાભ એ છે કે તે બિન-સ્કેલેબલ છે. સંશોધન સૂચવે છે કે જેમ જેમ પ્રોસેસરોને ટિકિટ લોક સિસ્ટમમાં ઉમેરવામાં આવે છે, તેમ તેમ કામગીરીમાં ઝડપથી ઘટાડો થતો જણાય છે. બીજી સમસ્યા તાળું છોડવાની છે. બધા થ્રેડો એક ચલ પર ફરતા હોય છે, તેથી જ્યારે તાળું છોડવામાં આવે છે ત્યારે ત્યાં τ (p) અમાન્યતા (તેમજ τ (p) સંપાદન) હોય છે. આનું કારણ એ છે કે તમામ થ્રેડોએ તેમના બ્લોકને કેશમાં ફરીથી લોડ કરવો જોઈએ અને નિર્ણાયક વિભાગમાં તેમના પ્રવેશને નિર્ધારિત કરવા માટે એક પરીક્ષણ કરવું જોઈએ. ટિકિટ લોક 1991માં મેલર-ક્રેમી અને સ્કોટ દ્વારા રજૂ કરવામાં આવ્યું હતું. આ અલ્ગોરિધમ તેના ફાયદાઓને કારણે 2008 માં લિનક્સ કર્નલમાં રજૂ કરવામાં આવ્યું હતું, પરંતુ પેરાવર્ચ્યુઅલાઈઝ્ડ વાતાવરણમાં તેને અવગણવામાં આવ્યું હતું જ્યાં તેના ગેરફાયદા હતા. પેરા વર્ચ્યુઅલાઈઝેશનમાં ટિકિટ તાળાઓનો ઉપયોગ સક્ષમ કરવા માટે કામ ચાલી રહ્યું છે. માર્ચ 2015 સુધીમાં રેડ હેટ એન્ટરપ્રાઇઝ લિનક્સ દ્વારા તેમની સિસ્ટમમાં આ પ્રકારની લોકિંગ યોજનાનો ફરીથી ઉપયોગ કરવામાં આવ્યો છે. સંબંધિત કાર્ય લેમ્પોર્ટનું બેકરી અલ્ગોરિધમ "ટિકિટ" અથવા "કાઉન્ટર" ની સમાન વિભાવનાનો ઉપયોગ કરે છે પરંતુ અણુ હાર્ડવેર કામગીરીનો ઉપયોગ કરતું નથી. તે પ્રદર્શનને બદલે ભૂલ સહનશીલતા માટે ડિઝાઇન કરવામાં આવ્યું હતું. બધા પ્રોસેસરો સતત રીલીઝ કાઉન્ટરની તપાસ કરવાને બદલે, બેકરી તાળું તેના સાથીઓની ટિકિટની તપાસ કરવા પર ફરે છે. કતાર-આધારિત સ્પિન તાળાઓ રાહ જોનારાઓની કતાર જાળવીને અને અનલૉક કામગીરી દરમિયાન પ્રથમ રાહ જોનારને તાળા આપીને નિષ્પક્ષતાની બાંયધરી આપે છે. અન્ય અણુ સૂચના 'લાવો અને ઉમેરો' પણ જુઓ, જેનો ઉપયોગ ટિકિટ લોક સંદર્ભો સમવર્તી નિયંત્રણ અલ્ગોરિધમ્સનો અમલ કરવા માટે 'લાવો અને વધારો' ની જગ્યાએ થઈ શકે છે.