મ્યૂટક્સ અને ઇવેન્ટ વચ્ચેના તફાવત.

Anonim

મ્યૂટેક્સ vs ઇવેન્ટ

સી # માં, ઘણાં બધાં થ્રેડિંગ સુમેળ વિકલ્પો છે. વધુ વ્યાપકપણે ઉપયોગમાં લેવાતા બે બટુ અને મ્યૂતક્સ છે. આ બંને વચ્ચેનો તફાવત બરાબર શું છે? જે એક સારો વિકલ્પ છે?

ઇવેન્ટનો વિકલ્પ થ્રેડોને અવરોધિત કરવાના વિકલ્પ આપવા સક્ષમ છે જ્યાં સુધી ઇવેન્ટ પ્રસારિત ન થાય ત્યાં સુધી તેનું નામ "ઇવેન્ટ. "તે કંઈક ઊંઘ માટે મૂકે છે અને મહત્વનું કંઈક થાય ત્યારે જ તે જાગૃત થાય છે. ઘટનાઓ mutexes થી વિપરીત છે કારણ કે mutexes પાસે સિગ્નલિંગ વિકલ્પ અથવા વિધેય નથી. ઇવેન્ટ્સ સિગ્નલ સાફ કરવા સક્ષમ હોય છે, જ્યારે એક વ્યક્તિ રાહ જોવામાં સક્ષમ થઇ જાય છે ત્યારે તે વેચે છે. એટલું જ નહીં, એક અથવા બધા વિવિધ ઇવેન્ટ્સને સંકેત આપવામાં આવે ત્યાં સુધી, API નો અવરોધિત કરવાનું વિકલ્પ આપવામાં સક્ષમ છે. વધુમાં, ઇવેન્ટ્સ કર્નલ ઓબ્જેક્ટો છે તેઓ મૉટેક્સિસની તુલનામાં "હળવા" નથી. એક ઇવેન્ટ મૂળભૂત રીતે બે રાજ્યો ધરાવતી કર્નલ ઓબ્જેક્ટ છે. સામાન્ય રીતે, એક ઇવેન્ટ ઘટનાનો સંકેત આપે છે અને ક્યારેક તો I / O ઓપરેશન્સનો અંત પણ છે.

"મ્યુટેક્સ" એ મ્યુચ્યુઅલ એક્સક્લૂઝન માટે વપરાય છે. તે વહેંચાયેલ સ્ત્રોતો માટે સ્કોપ સંકલન પ્રણાલીનો એક પ્રકાર છે. તે વ્યવહારના એક સ્વરૂપ તરીકે વિચારો. તમે રાહ જોવા માટે બંધાયેલા નથી, જોકે તમે થોડા વહેંચેલા સ્રોતોને ઍક્સેસ કરવા માગો છો (માત્ર તે જ ઉદાહરણ છે કે જે અન્ય લોકો પહેલાથી જ તેનો ઉપયોગ કરે છે) તમે અવરોધિત છો. એક મ્યૂટેક્સ બે રાજ્ય ધરાવે છે, જો કે તે મ્યુચ્યુઅલ એક્સક્લુઝનને અસર કરે છે. આ માટે જ્યારે તમે કોડના વિસ્તરણને રક્ષણ આપવા માંગો છો, જે સામાન્ય રીતે તે હિસ્સામાંથી વહેંચાયેલ સ્ત્રોતને અપડેટ કરે છે જેમાં મ્યૂટક્સને તે ભાગમાં દાવો કરવામાં આવે છે જેમાં તે રિલીઝ થશે. આ એ હકીકત તરફ દોરી જાય છે કે વિભાગ દ્વારા કોઈ અન્ય થ્રેડ પસાર કરી શકતો નથી.

લોકો જેમણે મ્યૂટેક્સની મદદ સાથે કોઈ ઇવેન્ટને અનુકરણ કરવાનો પ્રયાસ કર્યો હોય તેમને મુશ્કેલીનો સામનો કરવો પડ્યો હતો, જેમાં તરત જ લૉક હસ્તગત કરવામાં આવે અથવા ઇવેન્ટ સિગ્નલ થઈ જાય, વ્યક્તિ દરેક વ્યક્તિને બગાડે છે જ્યાં સુધી લોક રીલિઝ ન થાય ત્યાં સુધી. આ ઇવેન્ટના સંકેતલિપી નથી. ઇવેન્ટ પોસ્ટ રહી શકે છે અને કોઈ પણ તાળા ન હોવાને કારણે તમામ થ્રેડ પરીક્ષણ માટે દ્વારનું એક સ્વરૂપ ઉપલબ્ધ રહેશે. મ્યૂટક્સ સમન્વયનને ઇન્ટરપ્રોસેસ કરવા માટે પ્રતિબદ્ધ છે કર્નલ-મોડ ઑબ્જેક્ટમાં છે. એક પદ્ધતિ હેઠળ મલ્ટિથ્રેડેડ સુમેળ માટે બનાવેલ ઇવેન્ટ્સ વપરાશકર્તા-મોડ ઑબ્જેક્ટમાં છે.

મ્યૂટક્સ ઑબ્જેક્ટ ખૂબ ભારે અને ખૂબ સામાન્ય છે. ઇવેન્ટ ઑબ્જેક્ટ ખૂબ હળવા હોય છે. વપરાશકર્તા-સ્થિતિ સમન્વયનનો ઉપયોગ મોટાભાગની પરિસ્થિતિઓમાં થાય છે કારણ કે તે ઓછા CPU ચક્ર આપે છે. મ્યૂટક્સ ખૂબ નિર્ણાયક વિભાગની જેમ છે અને તે વહેંચાયેલ સ્રોતોની ઍક્સેસને સુમેળ કરવા માટે વપરાય છે. ઇવેન્ટ્સ એકદમ અલગ કાર્ય ધરાવે છે કારણ કે તેનો ઉપયોગ કેટલાક લોકો માટે કાર્યો સુનિશ્ચિત કરવા અથવા કાર્ય સુનિશ્ચિત કરવાના સંચાલન માટે થાય છે.

ઘટનાઓ વધુ એક શરત ચલ છે, Mutex કરતાં વિપરીત, જે વધુ કેટલાક જેવી છે

પરિભાષા કેટલાક મોનીટર, અથવા તે સેમફૉર / મ્યૂટક્સ પરંપરાગત સ્વરૂપ હોઈ શકે છે

સારાંશ:

1. ઇવેન્ટનો વિકલ્પ થ્રેડોને ઇવેન્ટ પ્રસારિત થતાં સુધી બ્લોક કરવાનો વિકલ્પ આપવા સક્ષમ છે, આમ નામ "ઇવેન્ટ. "

2 એક ઇવેન્ટ મૂળભૂત રીતે બે રાજ્યો ધરાવતી કર્નલ ઓબ્જેક્ટ છે. સામાન્ય રીતે, એક ઇવેન્ટ ઘટનાનો સંકેત આપે છે અને ક્યારેક તો I / O ઓપરેશન્સનો અંત પણ છે.

3 "મ્યુટેક્સ" નો અર્થ એ છે કે મ્યુચ્યુઅલ એક્સક્લૂઝન. તે વહેંચાયેલ સ્ત્રોતો માટે સ્કોપ સંકલન પ્રણાલીનો એક પ્રકાર છે.

4 મ્યૂટક્સ સમન્વયનને ઇન્ટરપ્રોસેસ કરવા માટે પ્રતિબદ્ધ છે કર્નલ-મોડ ઑબ્જેક્ટમાં છે. એક પદ્ધતિ હેઠળ મલ્ટિથ્રેડેડ સુમેળ માટે બનાવેલ ઇવેન્ટ્સ વપરાશકર્તા-મોડ ઑબ્જેક્ટમાં છે.

5 ઇવેન્ટ્સ વધુ એક શરત ચલ છે, જે મ્યૂટક્સથી વિપરીત છે, જે કેટલીક પરિભાષામાં

મોનીટર જેવી છે, અથવા તે સેમફૉર / મ્યુટેકનું પરંપરાગત સ્વરૂપ હોઈ શકે છે.