"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اذهب الزمن وساعتيه

اذهب الزمن وساعتيه

تم النشر بتاريخ 2024-11-18
تصفح:232

Go time and its two clocks

لحساب الفاصل الزمني في Go، يمكنك استخدام

start := time.Now()
// long time consuming task
duration := time.Since(start)

ولكن هل تعلم أن حزمة الوقت في Go تحتوي بالفعل على مرتين، وأن time.Since() يقيس وقت المعالجة فقط (الساعة الرتيبة)، وليس الوقت الحقيقي (ساعة الحائط)؟

على سبيل المثال، إذا كانت المهمة طويلة جدًا، طوال الليل، ودخل جهاز الكمبيوتر الخاص بك في وضع السكون. ثم في الصباح، قد تأتي وترى أن المدة استمرت 4 ساعات فقط بينما مرت 10 ساعات إجمالاً.

تنص الحزمة الزمنية في Go على أن

توفر أنظمة التشغيل كلاً من "ساعة الحائط" التي تخضع لتغييرات لمزامنة الساعة، و"ساعة رتيبة" وهي ليست كذلك. القاعدة العامة هي أن ساعة الحائط مخصصة لمعرفة الوقت والساعة الرتيبة لقياس الوقت.

ما يخبرك به حقًا في المثال أعلاه هو أن برنامجك يعمل بشكل نشط لمدة 4 ساعات، لكن الكمبيوتر ينام 6 ساعات، لذلك انتظرت إجماليًا 10 ساعات. إذا لم ينام الكمبيوتر، فسيتم ذلك خلال 4 ساعات.

إذن ماذا تفعل إذا كنت تريد قياس وقت الحائط؟ يمكنك استخدام الدالة Round(0). t = t.Round(0) سوف يزيل الساعة الرتيبة في t.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/jingshao_chen_02a2352f476/go-time-and-its-two-clocks-3p0p?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3