Menghindari Data Race
Jaga penulisan paralel tetap aman.
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 parallelTulis 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 uniquePembacaan 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 workerLakukan 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. 🚀
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
- Fungsi parallelize
- Membagi Pekerjaan Menjadi Potongan
- Menggabungkan Paralel dan Vektor
- Menghindari Data Race