Sleep (system call)
ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂ (ಪ್ರಕ್ರಿಯೆ, ಕಾರ್ಯ ಅಥವಾ ಥ್ರೆಡ್) ನಿದ್ರಿಸಬಹುದು, ಇದು ಅದನ್ನು ಒಂದು ನಿರ್ದಿಷ್ಟ ಅವಧಿಗೆ ನಿಷ್ಕ್ರಿಯ ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಿಸುತ್ತದೆ. ಅಂತಿಮವಾಗಿ ಮಧ್ಯಂತರ ಟೈಮರ್ನ ಮುಕ್ತಾಯ, ಅಥವಾ ಸಿಗ್ನಲ್ ಅಥವಾ ಇಂಟರಪ್ಟ್ನ ಸ್ವೀಕೃತಿಯು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಪುನರಾರಂಭಿಸುತ್ತದೆ. ಒಂದು ವಿಶಿಷ್ಟವಾದ ಸ್ಲೀಪ್ ಸಿಸ್ಟಮ್ ಕರೆ ನಿಯತಾಂಕವಾಗಿ ಸಮಯದ ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇದು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪುನರಾರಂಭಿಸುವ ಮೊದಲು ಪ್ರಕ್ರಿಯೆಯು ನಿದ್ರಿಸುವ ಕನಿಷ್ಠ ಸಮಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ನಿಯತಾಂಕವು ಸಾಮಾನ್ಯವಾಗಿ ಸೆಕೆಂಡುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ, ಆದಾಗ್ಯೂ ಕೆಲವು ಕಾರ್ಯಾಚರಣಾ ವ್ಯವಸ್ಥೆಗಳು ಮಿಲಿಸೆಕೆಂಡುಗಳು ಅಥವಾ ಮೈಕ್ರೊ ಸೆಕೆಂಡುಗಳಂತಹ ಉತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ. ವಿಂಡೋಸ್ನಲ್ಲಿ, ಸ್ಲೀಪ್ () ಕಾರ್ಯವು ನಿದ್ದೆ ಮಾಡಲು ಮಿಲಿಸೆಕೆಂಡುಗಳ ಸಂಖ್ಯೆಯ ಒಂದೇ ನಿಯತಾಂಕವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಸ್ಲೀಪ್ () ಕಾರ್ಯವನ್ನು kernel32.dll ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ. ಕಾರ್ಯವು ಪ್ರಸ್ತುತ ಟೈಮರ್ ರೆಸಲ್ಯೂಶನ್ಗಿಂತ ಹೆಚ್ಚಿನ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ, ಸಾಮಾನ್ಯವಾಗಿ 16 ಮಿ. ಆದರೆ ಕನಿಷ್ಠ 1 ಮಿ. ನಲ್ಲಿ, "ಮೀಡಿಯಾ ಟೈಮರ್" ಎಪಿಐಗಳ ಕುಟುಂಬದ ಮೂಲಕ ಸರಿಹೊಂದಿಸಬಹುದು. ಹೆಚ್ಚಿನ ನಿಖರತೆಗಳಿಗಾಗಿ, ಗ್ನ್ಯುಲಿಬ್ನಲ್ಲಿ ಬಳಸುವಂತಹ ಕಾರ್ಯನಿರತ ಲೂಪ್ ಓವರ್ ಅನ್ನು ಬಳಸುವುದು ಅವಶ್ಯಕವಾಗಿದೆ. ಯುನಿಕ್ಸ್-ರೀತಿಯ ಮತ್ತು ಇತರ ಪೋಸಿಕ್ಸ್ ಕಾರ್ಯಾಚರಣಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ಸ್ಲೀಪ್ () ಕಾರ್ಯವನ್ನು ನಿದ್ರೆ ಮಾಡಲು ಸೆಕೆಂಡುಗಳ ಸಂಖ್ಯೆಯ ಸಹಿ ಮಾಡದ ಪೂರ್ಣಾಂಕದ ಒಂದೇ ನಿಯತಾಂಕವನ್ನು ಒದಗಿಸುವುದು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಹೆಚ್ಚಿನ ನಿಖರತೆಯ ಆವೃತ್ತಿಯು ಕಾರ್ಯವಾಗಿದೆ ಮತ್ತು ಈಗ ಅಸಮ್ಮತಿಗೊಂಡಿದೆ. ಪೊಸಿಕ್ಸ್ ವಿಸ್ತೃತ ಆವೃತ್ತಿಯ ಮೂಲಕ ಗಡಿಯಾರದ ಮೂಲಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಹ ಅನುಮತಿಸುತ್ತದೆ. ಇದರ ಒಂದು ಆವೃತ್ತಿಯನ್ನು ಸಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಭಾಗವಾಗಿಸಲು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿತ್ತು, ಆದರೆ ಅದನ್ನು ತಿರಸ್ಕರಿಸಲಾಯಿತು. ಅದೇ ಪ್ರಸ್ತಾಪದ ಯುಟಿಸಿ ಸಮಯದ ಭಾಗವನ್ನು ಸಿ11ಗೆ ಸೇರಿಸಲಾಯಿತು. ವಿಂಡೋಸ್ ಎಪಿಐನಲ್ಲಿ ಸಿ ಉದಾಹರಣೆಗಳುಃ ನಿದ್ರೆ (2 * 1000);// ಯುನಿಕ್ಸ್ ಅಥವಾ ಪೋಸಿಕ್ಸ್ ಸಿಸ್ಟಮ್ ಕರೆಗಳಲ್ಲಿ 2 ಸೆಕೆಂಡುಗಳ ಕಾಲ ನಿದ್ರೆ ಮಾಡಿಃ ನಿದ್ರೆ (2);// 2 ಸೆಕೆಂಡುಗಳ ಕಾಲ ನಿದ್ರೆ ಕಡಿಮೆ ಮಟ್ಟದ ಕಾರ್ಯಕ್ಷಮತೆ ನಿದ್ರೆ ಥ್ರೆಡ್ ಅಥವಾ ಪ್ರಕ್ರಿಯೆಯು ಅದರ ಉಳಿದ ಸಮಯದ ಸ್ಲೈಸ್ ಅನ್ನು ಬಿಟ್ಟುಬಿಡಲು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಅವಧಿಗೆ ರನ್ ಮಾಡಲಾಗದ ಸ್ಥಿತಿಯಲ್ಲಿರಲು ಕಾರಣವಾಗುತ್ತದೆ. ಕನಿಷ್ಠ ಅವಧಿಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಖಾತರಿ ಇದ್ದರೂ, ನಿರ್ದಿಷ್ಟ ಸಮಯ ಕಳೆದುಹೋದ ನಂತರ, ಥ್ರೆಡ್ ತಕ್ಷಣವೇ ಅಥವಾ ಶೀಘ್ರದಲ್ಲೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಯಾವುದೇ ಕಟ್ಟುನಿಟ್ಟಾದ ಗ್ಯಾರಂಟಿ ಇಲ್ಲ. ಇದು ವೇಳಾಪಟ್ಟಿದಾರರ ವಿವೇಚನೆಗೆ ಬಿಟ್ಟದ್ದು, ಮತ್ತು ಸ್ಲೀಪಿಂಗ್ ಥ್ರೆಡ್ ಮತ್ತೆ ಯಾವಾಗ ಓಡುತ್ತದೆ ಎಂಬುದರಂತಹ ಟೈಮರ್ ರೆಸಲ್ಯೂಶನ್ಗಳಂತಹ ಥ್ರೆಡ್ ಆದ್ಯತೆಗಳು ಮತ್ತು ಅನುಷ್ಠಾನದ ವಿವರಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಪೋಸಿಕ್ಸ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ನ್ಯಾನೊ ಸ್ಲೀಪ್ ಮತ್ತು ಸಂಬಂಧಿತ ಸಿಸ್ಕಾಲ್ಗಳು ಸಂಕೇತಗಳಿಂದ ಅಡ್ಡಿಪಡಿಸಲ್ಪಡುತ್ತವೆ, ಉಳಿದ ನಿದ್ರೆಯ ಸಮಯವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತವೆ. ಮತ್ತೊಂದೆಡೆ, ಸ್ಲೀಪ್ ಲೈಬ್ರರಿ ಕಾರ್ಯವನ್ನು ಅನೇಕ ಹಳೆಯ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಅಲಾರಾಂ ಸಿಸ್ಕಾಲ್ ಮೂಲಕ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಇದು ಸಂಕೇತವನ್ನು ತಲುಪಿಸುವ ಮೂಲಕ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಸಿಗ್ನಲ್ಗಳ ಅನುಪಸ್ಥಿತಿಯಿಂದಾಗಿ ವಿಂಡೋಸ್ ಸ್ಲೀಪ್ ಕಾರ್ಯವು ಅಡೆತಡೆಯಿಲ್ಲ (ಥ್ರೆಡ್ ಅಥವಾ ಅದರ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೊನೆಗೊಳಿಸುವುದನ್ನು ಹೊರತುಪಡಿಸಿ), ಆದಾಗ್ಯೂ ಸಂಬಂಧಿತ ಸ್ಲೀಪ್ಎಕ್ಸ್ ಕಾರ್ಯವನ್ನು ಥ್ರೆಡ್ ಅನ್ನು ಎಚ್ಚರಿಕೆಯ ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಿಸಲು ಬಳಸಬಹುದು, ಇದು ಥ್ರೆಡ್ ನಿದ್ದೆ ಮಾಡುವಾಗ APC ಕರೆಗಳನ್ನು ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಅಲ್ಲದೆ, ಒಂದು ದಾರವನ್ನು ತಾಂತ್ರಿಕವಾಗಿ ಉದಾಹರಣೆಗೆ "ಅಡ್ಡಿಪಡಿಸಬಹುದು". ಬೇರೆ ಥ್ರೆಡ್ನಲ್ಲಿ ವಿನಾಯಿತಿಯ ಕಾರಣ ಪ್ರಕ್ರಿಯೆಯು ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಈವೆಂಟ್ ಲೂಪ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಎಂದಿಗೂ ನಿಲ್ಲಿಸದ ಕೆಲವು ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಪ್ರತಿ ಚಕ್ರದ ಆರಂಭದಲ್ಲಿ ನಿದ್ರೆಗೆ ಹೋಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಎಚ್ಚರಗೊಳಿಸಲು ಕೆಲವು ಘಟನೆಗಳಿಗಾಗಿ ಕಾಯುತ್ತದೆ. ಈವೆಂಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ಪ್ರೋಗ್ರಾಂ ಈವೆಂಟ್ಗೆ ಸೇವೆ ಸಲ್ಲಿಸುತ್ತದೆ, ನಂತರ ಮುಂದಿನ ಕಾಯುವ ಚಕ್ರದ ಆರಂಭಕ್ಕೆ ಮರಳುತ್ತದೆ. ಇತರ ಕಾರ್ಯಕ್ರಮಗಳು ನಿಯತಕಾಲಿಕವಾಗಿ ನಿದ್ರೆಗೆ ಹೋಗುವ ಮೂಲಕ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಸಮಯದ ನಂತರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪುನರಾರಂಭಿಸುವ ಮೂಲಕ ಘಟನೆಗಳಿಗೆ ಮತದಾನ ಮಾಡುತ್ತವೆ. ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪುನರಾರಂಭಿಸಿದ ನಂತರ, ಕಾರ್ಯಕ್ರಮವು ಘಟನೆಗಳು ಅಥವಾ ಸ್ಥಿತಿ ಬದಲಾವಣೆಗಳಿಗೆ ಮತದಾನ ಮಾಡುತ್ತದೆ, ಮತ್ತು ನಂತರ ಅದು ನಿದ್ದೆ ಮಾಡುವಾಗ ಸಂಭವಿಸಿದ ಯಾವುದೇ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈವೆಂಟ್ಗಳನ್ನು ಸರ್ವಿಸ್ ಮಾಡಿದ ನಂತರ, ಪ್ರೋಗ್ರಾಂ ಮುಂದಿನ ಸಮಯದ ಮಧ್ಯಂತರಕ್ಕೆ ಮತ್ತೆ ನಿದ್ರೆಗೆ ಹೋಗುತ್ತದೆ. ಕೆಲವು ರೀತಿಯ ಹೃದಯ ಬಡಿತದ ಘಟನೆಗಳು ಅಥವಾ ಜೀವಂತವಾಗಿರುವ ಸಂಕೇತಗಳನ್ನು ಈ ರೀತಿಯ ಕಾರ್ಯಕ್ರಮಗಳಿಂದ ಉತ್ಪಾದಿಸಬಹುದು. ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಕೋಡ್ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿಧಾನಗೊಳಿಸಲು ಸ್ಲೀಪ್ () ಫಂಕ್ಷನ್ ಕರೆಯನ್ನು ಅಲ್ಪಾವಧಿಗೆ ಪದೇ ಪದೇ ಕರೆಯಬಹುದು. ಈ ರೀತಿಯಲ್ಲಿ ಥ್ರೊಟ್ಲಿಂಗ್ ಕೋಡ್ ಯಂತ್ರಾಂಶವನ್ನು ಅತಿಯಾಗಿ ಬಿಸಿಮಾಡುವ ಪರಿಣಾಮಗಳನ್ನು ತಗ್ಗಿಸಲು ಅಥವಾ ಲೆಗಸಿ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ ಸಮಯದ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಾಗಗೊಳಿಸಲು ಒರಟಾದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸಾಫ್ಟ್ವೇರ್ನ ಕಾರ್ಯಗತಗೊಳಿಸುವ ವೇಗವನ್ನು ನಿಯಂತ್ರಿಸಲು ಸೈಕಲ್ ಎಮ್ಯುಲೇಷನ್ ಅನ್ನು (ಎಮ್ಯುಲೇಟರ್ ಮೂಲಕ) ನಿಯಂತ್ರಿಸುವ ಬದಲು ಸೈಕ್ಲಿಂಗ್ ನಿದ್ರೆ ಮತ್ತು ಓಟದ ಸ್ಥಿತಿಗಳ ತೊಂದರೆಯೆಂದರೆ, ಸಂವಹನ ತಂತ್ರಾಂಶವು ತುಂಬಾ ಕಡಿಮೆ ಸಮಯವನ್ನು ಎಚ್ಚರವಾಗಿ ಕಳೆದರೆ, ಹೆಚ್ಚು ಸಮಯವನ್ನು ನಿದ್ರೆಯಲ್ಲಿ ಕಳೆದರೆ ಅಥವಾ ಎರಡರ ಸಂಯೋಜನೆಯನ್ನು ಹೊಂದಿದ್ದರೆ ಗಮನಾರ್ಹ ತೊದಲುವಿಕೆಯನ್ನು ಪಡೆಯುತ್ತದೆ. ಅಡೆತಡೆಯಿಲ್ಲದ ನಿದ್ರೆ ಒಂದು ಅಡೆತಡೆಯಿಲ್ಲದ ನಿದ್ರೆಯ ಸ್ಥಿತಿಯಾಗಿದ್ದು ಅದು ತಕ್ಷಣವೇ ಸಂಕೇತವನ್ನು ನಿಭಾಯಿಸುವುದಿಲ್ಲ. ಕಾಯುವ ಸಂಪನ್ಮೂಲವು ಲಭ್ಯವಾದ ಪರಿಣಾಮವಾಗಿ ಅಥವಾ ಆ ಕಾಯುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ಟೈಮ್-ಔಟ್ ಸಂಭವಿಸಿದ ನಂತರ (ನಿದ್ದೆ ಮಾಡುವಾಗ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದರೆ) ಮಾತ್ರ ಇದು ಎಚ್ಚರಗೊಳ್ಳುತ್ತದೆ. ಡಿಸ್ಕ್ ಅಥವಾ ನೆಟ್ವರ್ಕ್ ಐಒ (ಇನ್ಪುಟ್/ಔಟ್ಪುಟ್) ಗಾಗಿ ಕಾಯುತ್ತಿರುವ ಸಾಧನ ಚಾಲಕರು ಇದನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸುತ್ತಾರೆ. ಪ್ರಕ್ರಿಯೆಯು ಅಡೆತಡೆಯಿಲ್ಲದೆ ನಿದ್ದೆ ಮಾಡುವಾಗ, ನಿದ್ರೆಯ ಸಮಯದಲ್ಲಿ ಸಂಗ್ರಹವಾದ ಸಂಕೇತಗಳು ಸಿಸ್ಟಮ್ ಕರೆ ಅಥವಾ ಟ್ರ್ಯಾಪ್ನಿಂದ ಪ್ರಕ್ರಿಯೆಯು ಹಿಂತಿರುಗಿದಾಗ ಗಮನಿಸಲ್ಪಡುತ್ತವೆ. ಯುನಿಕ್ಸ್ ತರಹದ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ 'ps-l' ಆಜ್ಞೆಯು ಒಂದು ಪ್ರಕ್ರಿಯೆಯ ತಡೆರಹಿತ ನಿದ್ರಾವಸ್ಥೆಗಾಗಿ ಕೋಡ್ "D" ಅನ್ನು ಬಳಸುತ್ತದೆ. ಅಂತಹ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು SIGKILL ನಿಂದಲೂ ಕೊಲ್ಲಲು ಸಾಧ್ಯವಿಲ್ಲ ಮತ್ತು ಅವುಗಳನ್ನು ತೊಡೆದುಹಾಕಲು ಏಕೈಕ ಅತ್ಯಾಧುನಿಕವಲ್ಲದ ಮಾರ್ಗವೆಂದರೆ ಸಿಸ್ಟಮ್ ಅನ್ನು ರೀಬೂಟ್ ಮಾಡುವುದು. ಸಿಗ್ನಲ್ ಸಿಸ್ಟಮ್ ಟೈಮ್ ಸ್ಲೀಪ್ (ಕಮಾಂಡ್) ಸ್ಲೀಪ್ ಮೋಡ್ ವೇಟ್ (ಸಿಸ್ಟಮ್ ಕರೆ) ರೆಫೆರೆನ್ಸ್ ಪ್ರೊಸೆಸ್ (ಕಂಪ್ಯೂಟಿಂಗ್) ಥ್ರೆಡ್ಸ್ (ಕಂಪ್ಯೂಟಿಂಗ್) ಅನ್ನು ಸಹ ನೋಡಿ.