Thread, Multithreading, dan Concurrency

Thread, Multithreading, dan Concurrency
Pertemuan 4 • Thread, Multithreading & Concurrency
By Alimin, M.Kom
Program Studi Sistem dan Teknologi Informasi

Thread, Multithreading, dan Concurrency

By Alimin, M.Kom
Concurrency Infrastructure
Topik Utama: Memahami hakikat Thread di dalam Process, komparasi Concurrency vs Parallelism, orkestrasi ribuan thread pada prosesor modern, hingga tantangan Critical Section dan Race Condition pada sistem AI.
Pertemuan 4: Thread & Concurrency 1 / 14 Slide Berikutnya →
Capaian Pembelajaran

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.
Refleksi Pertemuan 3

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.

Pertanyaan Kunci:

"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.

Konsep Dasar

3. Apa Itu Thread?

Thread adalah unit eksekusi terkecil di dalam sebuah Process yang dapat dijadwalkan oleh Sistem Operasi untuk menggunakan CPU.

PROCESS: Google Chrome │ ├── Thread 1 → Merender antarmuka halaman web ├── Thread 2 → Menjalankan mesin skrip JavaScript ├── Thread 3 → Mengunduh aset via koneksi jaringan ├── Thread 4 → Memproses pemutaran video / audio └── Thread 5 → Menyimpan cache data ke SSD
Kesimpulan Ringkas: Process adalah wadah penyedia sumber daya, sedangkan Thread adalah pekerja yang mengeksekusi instruksi.
Analogi Nyata

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.

Komparasi Konsep

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.
"Program adalah apa yang kita jalankan, Process adalah program yang berjalan, dan Thread adalah pekerjaan di dalam Process tersebut."
Arsitektur Eksekusi

6. Single Thread vs Multithreading

Single Thread (Sekuensial)

Hanya memiliki 1 jalur eksekusi utama. Semua instruksi antre berurutan.

Unduh File ──→ Olah Data ──→ Simpan (Jika unduh macet, UI freeze)

Multithreading (Banyak Jalur)

Menjalankan beberapa thread secara simultan di dalam proses yang sama.

Thread 1: Unduh File di background
Thread 2: Olah Data Komputasi
Thread 3: Antarmuka UI tetap aktif
Tujuan Multithreading: Meningkatkan responsivitas aplikasi, mengoptimalkan utilisasi core CPU, dan mencegah antarmuka mengalami Not Responding.
Konsep Fundamental

7. Concurrency ≠ Parallelism

Concurrency (Konkurensi)

Banyak tugas dikelola bersama dalam periode waktu yang sama. Menggunakan pergantian cepat (*time slicing*).

Single Core CPU: [Task A] → [Task B] → [Task A]... (Bergantian bergulir cepat)

Parallelism (Paralelisme)

Banyak tugas benar-benar dieksekusi bersamaan pada detik yang persis sama di core fisik yang berbeda.

Multi-Core CPU: Core 1: [Task A] Core 2: [Task B] (Simultan)
Kutipan Terkenal: "Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once."
Korelasi Hardware

8. Hubungan Thread dengan CPU Laptop

Data Hardware Laptop (Intel Core i5-1235U):
• 10 Physical Cores (2 P-Cores + 8 E-Cores)
• 12 Logical Processors (12 Jalur Antrean CPU)

Pertanyaan Mahasiswa: Apakah jika laptop memiliki 12 logical processors, ia hanya bisa menjalankan 12 Thread?

Bukan! Di Task Manager terdapat lebih dari 3.000 Thread yang aktif dan antre bersamaan. Windows CPU Scheduler menentukan Thread mana yang mendapat jatah mikrodetik eksekusi pada 12 logical processor tersebut.
Observasi Lapangan

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.

chrome.exe ─── PID: 1234 ─── Threads: 32
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.

Aplikasi Modern

10. Multithreading pada Ekosistem AI

Pada sistem AI (misal: klasifikasi citra penyakit daun atau pengenalan wajah), sebuah server memecah tugasnya ke berbagai Thread:

AI SERVER PROCESS ├── Thread 1: Menerima HTTP request pengguna ├── Thread 2: Melakukan preprocessing & normalisasi citra ├── Thread 3: Mengirim tensor ke GPU CUDA untuk inferensi └── Thread 4: Menyimpan log & mengirim hasil prediksi
Saat ada 1.000 pengguna bersamaan, server tidak membuat 1.000 komputer fisik, melainkan mengatur pembagian antrean Process dan Thread pada core CPU/GPU yang tersedia.
Tantangan Konkurensi

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.

Contoh: Saldo Rp1.000.000
• 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.

Pemberantasan Miskonsepsi

12. Miskonsepsi yang Wajib Dihindari

❌ Salah: "Thread adalah CPU."
✅ Benar: Thread adalah jalur instruksi logika yang menggunakan resource CPU.
❌ Salah: "12 Logical Processors = hanya bisa jalan 12 Thread."
✅ Benar: OS mengelola ribuan thread yang dijadwalkan secara bergantian.
❌ Salah: "Multithreading selalu membuat program lebih cepat."
✅ Benar: Multithreading menambah beban *context switching* dan sinkronisasi memori (lock overhead).
Rangkuman & Penutup

13. Kesimpulan Perkuliahan

"Pada pertemuan sebelumnya kita bertanya: bagaimana Sistem Operasi mengatur banyak Process yang membutuhkan CPU? Hari ini kita masuk lebih dalam: ternyata di dalam Process sendiri terdapat Thread yang melakukan pekerjaan. Semakin kita memahami Sistem Operasi, semakin jelas bahwa aplikasi yang kita lihat di layar sebenarnya terdiri dari banyak pekerjaan yang harus dikelola oleh Sistem Operasi."
Next Topic (Pertemuan 5): Synchronization, Mutex, Semaphores & Deadlock Prevention — Membedah cara sistem mengunci data bersama agar aman dari tabrakan multi-thread.