Sinkronisasi dan Kondisi Balapan
Terapkan mutex dan semaphore untuk mengelola sumber daya bersama dengan aman.
Sinkronisasi dan Kondisi Balapan adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. 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 C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 3 pelajaran total.
Sinkronisasi dan Kondisi Balapan
Sinkronisasi dan Kondisi Balapan
Ketika beberapa utas mengakses sumber daya bersama, kondisi balapan dapat terjadi dan menyebabkan hasil yang tidak dapat diprediksi.
Dalam pelajaran ini, Anda akan mempelajari:
- Apa itu kondisi balapan dan bagaimana kondisi tersebut terjadi.
- Cara menggunakan mutex untuk mencegah kondisi balapan.
- Cara semafor membantu mengelola sumber daya bersama.

Apa Itu Kondisi Balapan?
Apa Itu Kondisi Balapan?
Kondisi balapan terjadi ketika beberapa utas mengakses data bersama secara bersamaan sehingga perilakunya tidak dapat diprediksi.
Contoh:
- Dua utas mencoba memperbarui penghitung global.
- Nilai akhirnya mungkin salah akibat saling mengganggu.
Contoh: Kondisi Balapan dalam Pemrosesan Multutas
Contoh: Kondisi Balapan dalam Pemrosesan Multutas
Program ini menunjukkan kondisi balapan ketika beberapa utas mengubah variabel bersama.
#include <stdio.h>
#include <pthread.h>
int counter = 0;
void *incrementCounter(void *arg) {
for (int i = 0; i < 1000000; i++) {
counter++;
}
return NULL;
}
int main() {
pthread_t t1, t2;
pthread_create(&t1, NULL, incrementCounter, NULL);
pthread_create(&t2, NULL, incrementCounter, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
printf("Final counter value: %d\n", counter);
return 0;
}Mencegah Kondisi Balapan dengan Mutex
Mencegah Kondisi Balapan dengan Mutex
Mutex (eksklusi mutual) memastikan hanya satu utas yang mengakses sumber daya pada satu waktu.
Fungsi mutex:
pthread_mutex_init()- Menginisialisasi mutex.pthread_mutex_lock()- Mengunci mutex.pthread_mutex_unlock()- Membuka kunci mutex.pthread_mutex_destroy()- Menghapus mutex.
Contoh: Menggunakan Mutex untuk Mencegah Kondisi Balapan
Contoh: Menggunakan Mutex untuk Mencegah Kondisi Balapan
Program ini memperbaiki kondisi balapan dengan menggunakan mutex untuk mengendalikan akses ke penghitung bersama.
#include <stdio.h>
#include <pthread.h>
int counter = 0;
pthread_mutex_t lock;
void *incrementCounter(void *arg) {
for (int i = 0; i < 1000000; i++) {
pthread_mutex_lock(&lock);
counter++;
pthread_mutex_unlock(&lock);
}
return NULL;
}
int main() {
pthread_t t1, t2;
pthread_mutex_init(&lock, NULL);
pthread_create(&t1, NULL, incrementCounter, NULL);
pthread_create(&t2, NULL, incrementCounter, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
pthread_mutex_destroy(&lock);
printf("Final counter value: %d\n", counter);
return 0;
}Apa Itu Semafor?
Apa Itu Semafor?
Semafor adalah penghitung yang digunakan untuk mengendalikan akses ke sumber daya.
Fungsi utama:
sem_init()- Menginisialisasi semafor.sem_wait()- Mengurangi nilai semafor.sem_post()- Menambah nilai semafor.sem_destroy()- Menghapus semafor.
Contoh: Menggunakan Semafor untuk Sinkronisasi
Contoh: Menggunakan Semafor untuk Sinkronisasi
Program ini menggunakan semafor untuk mengelola akses ke sumber daya bersama.
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
sem_t sem;
void *task(void *arg) {
sem_wait(&sem);
printf("Thread %d is executing\n", *(int *)arg);
sem_post(&sem);
return NULL;
}
int main() {
pthread_t t1, t2;
int id1 = 1, id2 = 2;
sem_init(&sem, 0, 1);
pthread_create(&t1, NULL, task, &id1);
pthread_create(&t2, NULL, task, &id2);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
sem_destroy(&sem);
return 0;
}Praktik Terbaik untuk Sinkronisasi Utas
Praktik Terbaik untuk Sinkronisasi Utas
Untuk menghindari kondisi balapan:
- Gunakan mutex untuk melindungi variabel bersama.
- Gunakan semafor untuk mengelola sumber daya.
- Minimalkan penggunaan sumber daya bersama jika memungkinkan.
Ringkasan
Ringkasan
Dalam pelajaran ini, Anda telah mempelajari:
- Apa itu kondisi balapan dan bagaimana kondisi tersebut terjadi.
- Cara menggunakan mutex untuk mencegah kondisi balapan.
- Cara semafor membantu mengelola akses ke sumber daya bersama.
Dengan demikian, bagian Pemrosesan Multutas dan Konkruensi dalam C telah selesai!

Pertanyaan yang Sering Diajukan
Apakah pelajaran “Sinkronisasi dan Kondisi Balapan” gratis?
Ya — teks lengkap “Sinkronisasi dan Kondisi Balapan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Sinkronisasi dan Kondisi Balapan”?
Terapkan mutex dan semaphore untuk mengelola sumber daya bersama dengan aman. Kamu berlatih C 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 C Academy?
Tidak diperlukan pengalaman sebelumnya. C 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 3 dari 3.
Berapa lama pelajaran “Sinkronisasi dan Kondisi Balapan” 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 C Academy ini?
Ya. Setiap pelajaran C 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
- Pengenalan Thread
- Membuat dan Mengelola Thread
- Sinkronisasi dan Kondisi Balapan