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

لماذا يختفي مخرجات Goroutine الخاصة بي على نظام التشغيل Windows؟

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

Why Does My Goroutine Output Disappear on Windows?

تنفيذ Goroutine على Windows: استكشاف أخطاء الفشل الصامت وإصلاحها

يُظهر اختبار بسيط يتضمن goroutines سلوكًا غير متوقع على Windows، حيث لا يتم إنتاج الإخراج المتوقع . تنشأ المشكلة لأن الوظيفة الرئيسية لا تنتظر اكتمال goroutine قبل الإنهاء.

Go Await

عند تشغيل goroutine باستخدام الكلمة الأساسية "go"، يتم تنفيذه بالتزامن مع الوظيفة الرئيسية. ومع ذلك، لا يتوقف تنفيذ الوظيفة الرئيسية مؤقتًا وينتظر اكتمال goroutines التي تم استدعاؤها. وبالتالي، يتم خروج الوظيفة الرئيسية، مما قد يؤدي إلى ترك goroutine غير مجدولة.

التدابير العلاجية

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

الكود المعدل

الكود المعدل التالي يحل المشكلة عن طريق إضافة وقت نوم مدته 10 ثوانٍ إلى نهاية الوظيفة الرئيسية:

package main

import (
    "fmt"
    "time"
)

func test() {
    fmt.Println("test")
}

func main() {
    go test()
    time.Sleep(10 * time.Second)
}

الإخراج

ينتج الكود المعدل الآن الإخراج المتوقع:

اختبار
test
يسمح هذا التعديل للوظيفة الرئيسية بالانتظار بعد تشغيل goroutine، مما يمنحه الوقت الكافي لتنفيذ وطباعة رسالة "الاختبار" قبل انتهاء البرنامج.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3