Mojo Academy · Pelajaran

Menghindari Data Race

Jaga penulisan paralel tetap aman.

Pelajaran 4 dari 413 langkah

Menghindari Data Race adalah pelajaran Mojo Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Mojo Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Mojo Academy mencakup 4 pelajaran total.

Apa Itu Data Race

Data race terjadi ketika dua utas menyentuh memori yang sama secara bersamaan dan setidaknya salah satunya melakukan penulisan. Hasilnya menjadi tidak dapat diprediksi. ⚠️

Jebakan Klasik

Banyak worker yang menambahkan nilai ke satu total bersama akan saling bertabrakan. Pembaruan dapat hilang karena penulisan tumpang tindih dan saling menimpa.

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

Tulis ke Slot yang Terpisah

Perbaikan paling sederhana: berikan indeksnya sendiri untuk ditulisi oleh setiap worker. Jika keluaran tidak pernah tumpang tindih, tidak ada race.

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

Pembacaan Dapat Dilakukan Bersama

Banyak utas dapat membaca input yang sama dengan aman. Masalah baru muncul ketika seseorang menulis sesuatu yang sedang dibaca atau ditulis oleh utas lain.

Hasil Parsial per Worker

Untuk penjumlahan, berikan slot parsialnya sendiri kepada setiap worker. Mereka tidak pernah berbagi sel, sehingga operasi penambahan tetap aman.

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

Lakukan Reduksi Setelah Penggabungan

Setelah semua worker selesai, jumlahkan hasil parsial dalam satu utas. Reduksi akhir ini tidak memerlukan penguncian.

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

Hindari Status Dapat Diubah Bersama

Kode paralel yang paling aman hanya membagikan data baca-saja. Jika memungkinkan, simpan setiap bagian yang dapat diubah secara privat pada satu worker.

Urutan Tidak Dijamin

Worker dapat selesai dalam urutan apa pun. Jangan pernah bergantung pada satu chunk yang berjalan sebelum chunk lain, karena penjadwalan dapat berubah.

Kepemilikan Mojo Membantu

Kepemilikan dan semantik nilai Mojo mempersulit pembagian data secara tidak sengaja, tetapi logika paralel tetap menjadi tanggung jawab Anda agar tetap benar.

Uji dengan Banyak Proses

Race dapat tersembunyi di balik pengaturan waktu, jadi jalankan kode paralel berkali-kali dan bandingkan hasilnya dengan hasil acuan serial.

Cegah melalui Perancangan

Pertahanan terbaik adalah tata letak yang membuat penulisan tidak pernah tumpang tindih. Cegah race melalui perancangan, bukan dengan menambalnya setelah terjadi.

Pemeriksaan Singkat

Beberapa worker perlu menghitung satu jumlah secara paralel.

Rangkuman

Hindari race dengan menulis ke slot yang terpisah, menggunakan hasil parsial per worker, melakukan reduksi setelah penggabungan, dan tidak pernah bergantung pada urutan agar hasil paralel tetap benar. 🚀

Gratis untuk memulai

Belajar Mojo dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menghindari Data Race” gratis?

Ya — teks lengkap “Menghindari Data Race” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Mojo Academy, upgrade ke CoddyKit PRO. Kursus Mojo Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menghindari Data Race”?

Jaga penulisan paralel tetap aman. Kamu berlatih Mojo Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Mojo Academy?

Tidak diperlukan pengalaman sebelumnya. Mojo Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Menghindari Data Race” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Mojo Academy ini?

Ya. Setiap pelajaran Mojo Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi parallelize
  2. Membagi Pekerjaan Menjadi Potongan
  3. Menggabungkan Paralel dan Vektor
  4. Menghindari Data Race
← Kembali ke Mojo Academy