برمجياتقراءة دقيقتين

كتاب مجاني عن التزامن في Go يشرح ما لا يكتشفه الـ race detector

المغزى

اجتياز الاختبارات والـ race detector لا يعني أن الكود المتزامن صحيح، لأن الأداة ترى نوعًا واحدًا فقط من أخطاء التزامن.

أصدر المطور Anton Zhiyanov في 26 سبتمبر 2026 كتابًا مجانيًا بعنوان Go Concurrency Distilled، يتناول 19 موضوعًا في البرمجة المتزامنة بلغة Go. والكتاب متاح على الويب وبصيغة PDF، وأمثلته تفاعلية تعمل في المتصفح مباشرة. وتحمل صفحته عبارة تقول إنه مكتوب دون استخدام الذكاء الاصطناعي. ووصل إلى 232 نقطة على Hacker News.

ومن أهم ما يشرحه الكتاب الفرق بين مفهومين يخلط بينهما كثيرون: الـ data race والـ race condition.

الـ data race يحدث حين يصل خيطان من التنفيذ إلى الموضع نفسه في الذاكرة في الوقت نفسه دون تنظيم بينهما. وهذا ما يكتشفه الـ race detector المدمج في Go، ويشير إلى السطر الذي وقع فيه.

أما الـ race condition فشيء مختلف. هنا تكون كل عملية سليمة بمفردها ومتزامنة بشكل صحيح، لكن الترتيب الذي نُفّذت به ينتج نتيجة خاطئة. وفي هذه الحالة لا يبلّغ الـ race detector عن شيء، فيجتاز الكود الاختبارات ويجتاز الأداة، ثم يعطي نتيجة غير صحيحة.

وهذا يفسّر نوعًا مألوفًا من الأخطاء في الأنظمة الحقيقية: خطأ يظهر مرة كل بضع مئات من الطلبات ولا يعرف أحد مصدره. والمشكلة في هذه الحالة ليست في مكان البحث، بل في أن الأداة المستخدمة لا ترى إلا واحدًا من النوعين.

وبالنسبة للفرق التي تكتب Go في الإنتاج، يعني ذلك أن الاعتماد على الـ race detector وحده يترك فئة كاملة من الأخطاء دون فحص، وأن فهم ترتيب العمليات يبقى مسؤولية من يكتب الكود.

المصادر

  1. الكتاب المجاني
  2. توثيق Go عن الـ race detector
  3. نموذج الذاكرة في Go

من عدد الأحد 16 ربيع الآخر - 27 سبتمبر

أخبار ذات صلة

أخبار الأحد 16 ربيع الآخر - 27 سبتمبر