Pada postingan sebelumnya, saya membahas tentang implementasi thread di dunia website. Sekilas info, traditional processing adalah dimana di dalam menjalankan instruksi harus sesuai dengan urutan/alur-nya. Berbeda dengan itu, thread bisa membagi-bagi sebuah alur yang diberikan (seperti gambar) lalu di-eksekusi & tetap di dalam processing.

Analoginya, ada sebuah tugas untuk memotong2x wortel. Traditional processing akan memotong dari kiri – kanan berurutan menggunakan satu tangan. Berbeda dengan thread, wortel dipotong oleh lebih dari 1 tangan dengan tidak berurutan namun hasilnya sama dengan yang traditional processing. (seperti gambar).
Salah satu kelebihan Thread adalah kemampuan untuk sharing memory / resource lain untuk digunakan bersama-sama . Selain itu thread menggunakan address space yang sama. Sampai disini dulu untuk threadnya, karena nantinya akan berkaitan dengan context switch.
Context switch adalah sebuah proses untuk menyimpan context ( variable, data2x ) dari eksekusi sebuah program / processing ketika di-interrupt, lalu dapat di-restore kembali dari proses yang terakhir ketike hendak di-eksekusi kembali. Ini mirip dengan proses download di browser. Kita bisa men-stop sebuah download file lalu me-resume kembali dimana dilanjutkan download yang sudah ada. Context switching yang membuat sebuah proses bisa di-interrupt lalu di-lanjutkan kembali dengan hasil proses sebelumnya.
Dengan context switching, multiple process bisa di jalankan di single CPU. Jadi sebenarnya ketika kita menjalankan berbagai aplikasi ( multi-tasking ) di atas single CPU (single-core), maka CPU tersebut menjalankan semua proses dengan berpindah-pindah dari satu ke lainnya. Context switching ini dilakukan oleh Operating System (OS). Secara interval context-switching pada sistem umumnya sekitar 10 milliseconds!
Kembali lagi ke thread. Penggunaan thread akan terasa bila dijalankan di multiple core dibandingkan di single core. Namun, penggunaan multiple-threading di single-core tetap lebih cepat dibandingkan single process.


Bila thread bisa dijalankan di multiple-core, maka context switching juga berjalan di multiple-core juga. Sekarang kita sudah memahami konsep Context Switch di level OS. Dengan ini kita bisa lebih mendalami ke hal2x lain seperti asynchronous IO, blocking, non-blocking dan banyak lagi!