فهم التناقض في مدة وظيفة WinAPI Sleep()
عند استدعاء وظيفة WinAPI Sleep() مع معلمة 1 مللي ثانية، فإنه لوحظ أن مؤشر الترابط يتوقف فعلياً لمدة أطول بكثير، عادةً حوالي 15 ميلي ثانية. تثير هذه الظاهرة مخاوف بشأن مشكلات النظام المحتملة.
تكميم الوقت في Windows
يستخدم Windows آلية تكميم الوقت لجدولة سلاسل العمليات الخاصة به. وهذا يعني أن النظام يقوم بجدولة الخيوط في فترات زمنية منفصلة، تعرف باسم الكم. تختلف المدة الدقيقة لهذه الفواصل الزمنية بناءً على عدة عوامل، بما في ذلك إصدار Windows وإصداره. في المتوسط، يعمل Windows 7 بكمية زمنية تبلغ حوالي 15.6 مللي ثانية.
التأثير على Sleep() Duration
نتيجة لتكميم الوقت، أي غير صفر يتم تقريب وسيطة التأخير المقدمة إلى Sleep() إلى أقرب كمية. وهذا ما يفسر سبب قيام استدعاء Sleep(1) بإيقاف مؤشر الترابط مؤقتًا لمدة 15 مللي ثانية، وهو أقرب وقت زمني إلى 1 مللي ثانية.التحقق
للتحقق من هذا السلوك ، يمكنك تنفيذ مقتطف التعليمات البرمجية المقدم. قد يؤدي تشغيل التعليمات البرمجية إلى نتائج مختلفة اعتمادًا على إعدادات دقة مؤقت النظام. إذا تم ضبط دقة المؤقت على مستوى النظام يدويًا على 1 مللي ثانية، فقد تلاحظ فترات نوم أقصر. ومع ذلك، بشكل افتراضي، يستخدم Windows 7 دقة مؤقت تبلغ 15.6 مللي ثانية، مما يؤدي إلى ملاحظة فترات نوم ممتدة.الاستنتاج
التناقض في وظيفة Sleep () تُعزى المدة إلى آلية تكميم الوقت المتأصلة في برنامج جدولة مؤشرات الترابط لنظام التشغيل Windows. يضمن هذا التقريب أن يتم تنفيذ جدولة مؤشر الترابط بكفاءة ويمكن التنبؤ بها، مما يمنع تعارضات جدولة مؤشر الترابط المحتملة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3