0Pricing
Mojo Academy · درس

تجنب سباقات البيانات

حافظ على أمان عمليات الكتابة المتوازية

تجنب سباقات البيانات درس مجاني في Mojo Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Mojo Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Mojo Academy 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

What Is a Data Race

A data race happens when two threads touch the same memory at once and at least one writes. The result becomes unpredictable. ⚠️

The Classic Trap

Many workers adding into one shared total will clash. Updates get lost because writes overlap and stomp each other.

total += out[i]  # shared, unsafe in parallel

Write Disjoint Slots

The simplest fix: give each worker its own indices to write. If outputs never overlap, there is no race.

out[i] = compute(i)  # each i is unique

Reads Can Share

Many threads may read the same input safely. Trouble starts only when someone writes what others read or write.

Per-Worker Partials

For a sum, give each worker its own partial slot. They never share a cell, so the adds stay safe.

partials[c] += out[i]  # one slot per worker

Reduce After Joining

Once all workers finish, add the partials together in a single thread. This final reduction needs no locking.

for c in range(workers):
    total += partials[c]

Avoid Shared Mutable State

The safest parallel code shares only read-only data. Keep every mutable piece private to one worker when you can.

Order Is Not Guaranteed

Workers may finish in any order. Never rely on one chunk running before another, since the schedule can vary.

Mojo Ownership Helps

Mojo's ownership and value semantics make accidental sharing harder, but parallel logic is still yours to keep correct.

Test With Many Runs

Races hide behind timing, so run the parallel code many times and compare against a serial reference result.

Design It Out

The best defense is a layout where writes never overlap. Prevent races by design, not by patching afterward.

Quick Check

Several workers need to compute a single sum in parallel.

Recap

Avoid races by writing disjoint slots, using per-worker partials, reducing after joining, and never relying on order, so parallel results stay correct. 🚀

الأسئلة الشائعة

هل درس «تجنب سباقات البيانات» مجاني؟

نعم — نص درس «تجنب سباقات البيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Mojo Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Mojo Academy 4 دروس في المجموع.

ماذا ستتعلم في «تجنب سباقات البيانات»؟

حافظ على أمان عمليات الكتابة المتوازية تتمرن على Mojo Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Mojo Academy؟

لا تُشترط خبرة سابقة. Mojo Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تجنب سباقات البيانات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Mojo Academy هذا؟

نعم. كل درس في Mojo Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. دالة parallelize
  2. تقسيم العمل إلى أجزاء
  3. دمج التوازي والمتجهات
  4. تجنب سباقات البيانات
← العودة إلى Mojo Academy