Thread, Multithreading, dan Concurrency
1. Tujuan Pembelajaran
- Menjelaskan pengertian dan karakteristik mendasar Thread.
- Membedakan secara tegas konsep Program, Process, dan Thread.
- Menjelaskan paradigma Single Thread vs Multithreading.
- Memahami batasan komputasi antara Concurrency dan Parallelism.
- Menghubungkan eksekusi Thread dengan CPU Cores dan CPU Scheduling.
- Mengidentifikasi permasalahan konkurensi: Critical Section dan Race Condition.
2. Dari Process Menuju Thread
Pada Pertemuan 3, kita telah melihat bahwa aplikasi seperti Chrome, VS Code, Word, dan skrip Python berjalan di sistem operasi sebagai Process.
"Apakah sebuah Process hanya memiliki satu pekerjaan tunggal dari awal sampai selesai?"
Jawabannya: Tidak. Di dalam satu Process, aplikasi modern membagi tugasnya ke dalam unit eksekusi yang lebih kecil dan mandiri, yaitu Thread.
3. Apa Itu Thread?
Thread adalah unit eksekusi terkecil di dalam sebuah Process yang dapat dijadwalkan oleh Sistem Operasi untuk menggunakan CPU.
4. Analogi Restoran
Komponen Sistem:
- Restoran = Process (wadah/gedung fasilitas)
- Karyawan/Koki = Thread (pekerja aktif)
- Kompor/Dapur = CPU Cores (mesin fisik)
- Pesanan = Task / Pekerjaan komputasi
- Pelanggan = User
Prinsip Kerja:
Jika restoran hanya punya 1 koki, semua pesanan akan antre panjang. Dengan menambah banyak koki (Multithreading) yang memakai dapur dan bahan yang sama, restoran bisa merespons banyak pelanggan sekaligus.
5. Program vs Process vs Thread
| Entitas | Sifat | Pengertian & Sumber Daya |
|---|---|---|
| Program | Pasif | Kumpulan instruksi yang masih tersimpan di disk (misal: app.py). |
| Process | Aktif (Heavy) | Program yang sedang dijalankan di RAM dengan ruang memori terisolasi. |
| Thread | Aktif (Light) | Jalur eksekusi di dalam Process yang berbagi memori yang sama. |
6. Single Thread vs Multithreading
Single Thread (Sekuensial)
Hanya memiliki 1 jalur eksekusi utama. Semua instruksi antre berurutan.
Multithreading (Banyak Jalur)
Menjalankan beberapa thread secara simultan di dalam proses yang sama.
Thread 2: Olah Data Komputasi
Thread 3: Antarmuka UI tetap aktif
7. Concurrency ≠ Parallelism
Concurrency (Konkurensi)
Banyak tugas dikelola bersama dalam periode waktu yang sama. Menggunakan pergantian cepat (*time slicing*).
Parallelism (Paralelisme)
Banyak tugas benar-benar dieksekusi bersamaan pada detik yang persis sama di core fisik yang berbeda.
8. Hubungan Thread dengan CPU Laptop
• 12 Logical Processors (12 Jalur Antrean CPU)
Pertanyaan Mahasiswa: Apakah jika laptop memiliki 12 logical processors, ia hanya bisa menjalankan 12 Thread?
9. Cara Melihat Thread di Windows
Tekan Ctrl + Shift + Esc untuk membuka Task Manager.
Pilih tab Details > Klik kanan header kolom > Select Columns > Centang Threads.
code.exe ─── PID: 2345 ─── Threads: 18
python.exe ─── PID: 3456 ─── Threads: 12
*Untuk analisis mendalam tingkat lanjut di laboratorium, mahasiswa juga dapat memanfaatkan utilitas Process Explorer dari Microsoft Sysinternals.
10. Multithreading pada Ekosistem AI
Pada sistem AI (misal: klasifikasi citra penyakit daun atau pengenalan wajah), sebuah server memecah tugasnya ke berbagai Thread:
11. Critical Section & Race Condition
Race Condition:
Kondisi anomali saat hasil akhir program bergantung pada urutan atau timing eksekusi beberapa thread yang mengakses data bersama secara simultan.
• Thread 1: Baca saldo (1.000.000) → Rencana tarik Rp600.000
• Thread 2: Baca saldo di detik sama (1.000.000) → Rencana tarik Rp500.000
• Thread 1 & 2 menulis tanpa sinkronisasi → Saldo menjadi kacau dan tidak konsisten!
Solusi: Menetapkan Critical Section dan menerapkan mekanisme Synchronization (seperti Mutex / Semaphore) agar hanya satu thread yang boleh mengubah data pada satu waktu.
12. Miskonsepsi yang Wajib Dihindari
✅ Benar: Thread adalah jalur instruksi logika yang menggunakan resource CPU.
✅ Benar: OS mengelola ribuan thread yang dijadwalkan secara bergantian.
✅ Benar: Multithreading menambah beban *context switching* dan sinkronisasi memori (lock overhead).