🐹 شرح Go

الـ Goroutines والتزامن

ما هي الـ Goroutine؟

خيط تنفيذ خفيف جدًّا تديره Go — يمكن تشغيل آلاف منها بكلفة ضئيلة:

func sayHello() {
  fmt.Println("مرحبًا")
}

go sayHello()   // تعمل بالتوازي

دالة مجهولة كـ goroutine

go func() {
  fmt.Println("مهمّة في الخلفية")
}()

المشكلة: البرنامج لا ينتظر

func main() {
  go fmt.Println("قد لا تظهر!")
  // main ينتهي قبل أن تعمل الـ goroutine
}

نحتاج آلية مزامنة (الدرس القادم: channels و WaitGroup).

انتظار بسيط (للتوضيح فقط)

import "time"

go task()
time.Sleep(time.Second)   // ❌ ليست طريقة صحيحة للإنتاج

لماذا التزامن في Go قويّ؟

  • خادم ويب يخدم آلاف الطلبات، كل طلب في goroutine.
  • معالجة بيانات متوازية.
  • الـ goroutines أرخص بكثير من خيوط نظام التشغيل (~2KB لكل واحدة).

💡 التزامن (Concurrency) ≠ التوازي (Parallelism): Go تنظّم المهام بذكاء على الأنوية المتاحة.

🎯 التالي: القنوات (Channels).