Anda di halaman 1dari 10

Thread Parallel Programming

Contoh Program menggunakan Thread


• Global variabel
int counter = 0;
• Diakses oleh 4 thread
– Masing2 melakukan counter up (i++) 10000000 kali
– Total (harusnya) nilai counter menjadi 4 x 10000000 =
40000000
• Coba jalankan solusi pada slide berikut
– Copy dan jalankan program (screenshoot hasil masukan pada
laporan)
– Apakah nilai counter menjadi 40000000
– Mengapa?
Program 1
Kasus 2: Cashier
• Sebuah program internet banking sederhana
multi threading menggunakan algoritma sbb
apabila ada transfer masuk ke sebuah
rekening
(1) Thread mengakses saldo rekening
(2) Thread menjumlahkan nilai transfer yang masuk
dengan nilai saldo rekening
saldo = saldo + transfer
– Thread menyimpan nilai saldo yang baru
2 Thread menangani transfer masuk (saat
hampir bersamaan)
Thread 1 Thread 2 Saldo
Ada permintaan transfer masuk Ada permintaan transfer masuk Rp 0
Check saldo awal (SALDO = 0) Rp 0
Menerima transfer Rp 10000000 Check saldo awal (SALDO =0) Rp 0
Menghitung saldo baru Menerima transfer 20000000 Rp 0
SALDO= 0 + 10000000 =10000000
Menyimpan saldo baru SALDO =0+20000000= 20000000 Rp.100000
Rp.10000000 00
Menyimpan Saldo baru Rp Rp
20000000 20000000

• Kasus : Saldo =0 + 10000000+20000000


= 30000000
Tugas
• Hubungan kasus ke-2 dengan race condition?
• Bagaimana cara mengatasi masalah ini secara
teori ? (bandingkan dengan sistem operasi)
• Apa yang menentukan hasil akhir dari kasus
race condition apabila tidak ditangani?
Mutual Exclusion
Aplikasi pada program Counter
Tugas Programming
• Implementasi mutex pada kasus 2

Anda mungkin juga menyukai