Sleep (system call)
કમ્પ્યુટર પ્રોગ્રામ (પ્રક્રિયા, કાર્ય અથવા થ્રેડ) ઊંઘી શકે છે, જે તેને અમુક સમય માટે નિષ્ક્રિય સ્થિતિમાં મૂકે છે. આખરે અંતરાલ ટાઈમરની સમાપ્તિ, અથવા સંકેતની પ્રાપ્તિ અથવા વિક્ષેપ પ્રોગ્રામને અમલીકરણ ફરી શરૂ કરવા માટેનું કારણ બને છે. એક લાક્ષણિક સ્લીપ સિસ્ટમ કોલ એક પરિમાણ તરીકે સમય મૂલ્ય લે છે, જે અમલ ફરી શરૂ કરતા પહેલા પ્રક્રિયાને ઊંઘવા માટેના ઓછામાં ઓછા સમયનો ઉલ્લેખ કરે છે. પરિમાણ સામાન્ય રીતે સેકન્ડને સ્પષ્ટ કરે છે, જો કે કેટલીક ઓપરેટિંગ સિસ્ટમો વધુ સારું રિઝોલ્યુશન પ્રદાન કરે છે, જેમ કે મિલિસેકંડ અથવા માઇક્રોસેકન્ડ. વિન્ડોઝ પર, સ્લીપ () ફંક્શન ઊંઘવા માટે મિલિસેકન્ડ્સની સંખ્યાનું એક જ પરિમાણ લે છે. સ્લીપ () કાર્ય kernel32.dll માં સમાવિષ્ટ છે. ફંક્શનનું રિઝોલ્યુશન વર્તમાન ટાઈમર રિઝોલ્યુશન કરતા વધારે નથી, સામાન્ય રીતે 16 એમ. એસ. પરંતુ ઓછામાં ઓછું 1 એમ. એસ., "મીડિયા ટાઈમર" એપીઆઈના પરિવાર દ્વારા એડજસ્ટેબલ છે. ઉચ્ચ ચોકસાઇ માટે, વ્યસ્ત લૂપ ઓવરનો ઉપયોગ કરવો જરૂરી છે, જેમ કે જીન્યુલિબમાં વપરાતો લૂપ. યુનિક્સ જેવી અને અન્ય પોસિક્સ ઓપરેટિંગ સિસ્ટમો પર, સ્લીપ () કાર્યને સૂવા માટે સેકન્ડની સંખ્યાના હસ્તાક્ષર વગરના પૂર્ણાંકના એક જ પરિમાણ પ્રદાન કરવાનું કહેવામાં આવે છે. ઉચ્ચ-ચોકસાઇ ધરાવતું સંસ્કરણ એ કાર્ય છે અને હવે નાપસંદ કરેલું છે. પોસિક્સ વિસ્તૃત સંસ્કરણ દ્વારા ઘડિયાળના સ્રોતોને પસંદ કરવાની પણ મંજૂરી આપે છે. તેનું એક સંસ્કરણ સી પ્રોગ્રામિંગ ભાષાનો ભાગ બનવાની દરખાસ્ત કરવામાં આવી હતી, પરંતુ તેને નકારી કાઢવામાં આવી હતી. આ જ દરખાસ્તનો યુટીસી સમય ભાગ સી11માં ઉમેરવામાં આવ્યો હતો. વિન્ડોઝ API માં C ઉદાહરણોઃ સ્લીપ (2 * 1000);// 2 સેકન્ડ માટે સ્લીપ યુનિક્સ અથવા પોસિક્સ સિસ્ટમ કૉલ્સમાંઃ સ્લીપ (2);// 2 સેકન્ડ માટે સ્લીપ નિમ્ન સ્તરની કાર્યક્ષમતા સ્લીપ થ્રેડ અથવા પ્રક્રિયાને તેના બાકીના સમયના ભાગને છોડવા અને ચોક્કસ સમયગાળા માટે ન ચલાવી શકાય તેવી સ્થિતિમાં રહેવાનું કારણ બને છે. જ્યારે સામાન્ય રીતે લઘુતમ સમયગાળાની બાંયધરી હોય છે, ત્યાં કોઈ કડક બાંયધરી નથી કે થ્રેડ તરત જ અથવા ટૂંક સમયમાં ચાલશે, અથવા તો એકવાર નિર્દિષ્ટ સમય પસાર થઈ ગયા પછી પણ. તે શેડ્યૂલરની વિવેકબુદ્ધિ પર નિર્ભર કરે છે, અને સ્લીપિંગ થ્રેડ ફરીથી ક્યારે ચાલશે તે ટાઈમર રિઝોલ્યુશન જેવી થ્રેડ પ્રાથમિકતાઓ અને અમલીકરણ વિગતો પર આધારિત છે. પોસિક્સ પ્રણાલીઓ પર, નેનોસ્લીપ અને સંબંધિત સિસ્કોલ સંકેતો દ્વારા વિક્ષેપિત થાય છે, જે ઊંઘનો બાકીનો સમય પાછો આપે છે. બીજી બાજુ, સ્લીપ લાઇબ્રેરી કાર્ય, ઘણી જૂની સિસ્ટમો પર એલાર્મ સિસકોલ દ્વારા અમલમાં મૂકવામાં આવે છે, આમ તે ફક્ત સંકેત આપીને જ કામ કરે છે. સંકેતોની ગેરહાજરીને કારણે વિન્ડોઝ સ્લીપ કાર્ય બિન-વિક્ષેપકારક છે (થ્રેડ અથવા તેની પ્રક્રિયા સમાપ્ત થઈ રહી છે તે સિવાય), જો કે સંબંધિત સ્લીપએક્સ કાર્યનો ઉપયોગ થ્રેડને ચેતવણીની સ્થિતિમાં મૂકવા માટે થઈ શકે છે, જે થ્રેડ ઊંઘે છે ત્યારે APC કૉલ્સ કરવાની મંજૂરી આપે છે. ઉપરાંત, થ્રેડ તકનીકી રીતે "વિક્ષેપિત" થઈ શકે છે, ઉદાહરણ તરીકે. એક અલગ થ્રેડમાં અપવાદને કારણે પ્રક્રિયા સમાપ્ત થાય છે. કેટલાક સિસ્ટમ પ્રોગ્રામોનો ઉપયોગ કરે છે જે ઇવેન્ટ લૂપને ક્યારેય સમાપ્ત કરતા નથી, દરેક ચક્રની શરૂઆતમાં સૂઈ જાય છે અને તેમને જાગૃત કરવા માટે કોઈ ઘટનાની રાહ જુએ છે. એકવાર ઇવેન્ટ પ્રાપ્ત થઈ જાય પછી, પ્રોગ્રામ ઇવેન્ટની સેવા આપે છે, પછી આગામી રાહ ચક્રની શરૂઆતમાં પરત આવે છે. અન્ય કાર્યક્રમો સમયાંતરે ઊંઘમાં જઈને અને ચોક્કસ સમય અંતરાલ પછી અમલ ફરી શરૂ કરીને ઘટનાઓ માટે મતદાન કરે છે. એકવાર અમલ ફરી શરૂ થઈ જાય પછી, કાર્યક્રમો ઘટનાઓ અથવા સ્થિતિ ફેરફારો માટે મતદાન કરે છે, અને પછી તે ઊંઘતી વખતે જે બન્યું હોય તે સેવા આપે છે. ઇવેન્ટ્સની સેવા કર્યા પછી, પ્રોગ્રામ પછીના સમય અંતરાલ માટે ફરીથી સૂઈ જાય છે. આ પ્રકારના કાર્યક્રમો દ્વારા અમુક પ્રકારની ધબકારાની ઘટનાઓ અથવા જીવંત સંકેતો પેદા કરી શકાય છે. ચાલી રહેલા પ્રોગ્રામ અથવા કોડના અમલને ધીમું કરવા માટે સ્લીપ () ફંક્શન કૉલને ટૂંકા ગાળા માટે વારંવાર કૉલ કરી શકાય છે. આ રીતે થ્રોટલિંગ કોડ ઓવરહિટિંગ હાર્ડવેરની અસરોને ઘટાડવા અથવા લેગસી પ્રોગ્રામ્સ માટે સમયની સમસ્યાઓને સરળ બનાવવા માટે એક બરછટ પદ્ધતિ પ્રદાન કરે છે. સોફ્ટવેરના અમલીકરણની ઝડપને નિયંત્રિત કરવા માટે ચક્ર અનુકરણ (એમુલેટર દ્વારા) નો લાભ લેવાને બદલે સાયકલ સ્લીપ અને રનિંગ સ્ટેટ્સની નકારાત્મક બાજુ એ છે કે જો જાગવામાં ખૂબ ઓછો સમય પસાર કરવામાં આવે, ઊંઘમાં વધુ સમય પસાર કરવામાં આવે, અથવા બંનેનું સંયોજન હોય તો ઇન્ટરેક્ટિવ સોફ્ટવેર નોંધપાત્ર હઠીલાપણું પ્રાપ્ત કરશે. એક અવિરત ઊંઘની સ્થિતિ એ ઊંઘની સ્થિતિ છે જે તરત જ સંકેતને નિયંત્રિત કરશે નહીં. તે માત્ર રાહ જોવાતી સંસાધન ઉપલબ્ધ થવાના પરિણામે અથવા તે રાહ દરમિયાન સમય સમાપ્ત થયા પછી જાગશે (જો નિર્દિષ્ટ કરવામાં આવે તો જ્યારે ઊંઘ આવે ત્યારે). તેનો ઉપયોગ મોટે ભાગે ડિસ્ક અથવા નેટવર્ક IO (ઇનપુટ/આઉટપુટ) ની રાહ જોઈ રહેલા ઉપકરણ ડ્રાઇવરો દ્વારા થાય છે. જ્યારે પ્રક્રિયા અવિરતપણે ઊંઘી રહી હોય, ત્યારે જ્યારે સિસ્ટમ કોલ અથવા ટ્રેપમાંથી પ્રક્રિયા પરત આવે ત્યારે ઊંઘ દરમિયાન સંચિત સંકેતોની નોંધ લેવામાં આવશે. યુનિક્સ જેવી પ્રણાલીઓમાં 'ps-l' આદેશ પ્રક્રિયાની અવિરત ઊંઘની સ્થિતિ માટે કોડ "D" નો ઉપયોગ કરે છે. આવી પ્રક્રિયાઓને SIGKILL સાથે પણ ખતમ કરી શકાતી નથી અને તેમાંથી છુટકારો મેળવવાનો એકમાત્ર બિન-આધુનિક રસ્તો સિસ્ટમને રીબૂટ કરવાનો છે. સિગ્નલ સિસ્ટમ ટાઇમ સ્લીપ (આદેશ) સ્લીપ મોડ વેઇટ (સિસ્ટમ કૉલ) રેફરન્સ પ્રોસેસ (કમ્પ્યુટિંગ) થ્રેડ્સ (કમ્પ્યુટિંગ) પણ જુઓ.