Pengantar Thread Programming
Threading / Thread adalah sebuah
alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses (
proses yang sama atau proses yang berbeda ) dalam satu waktu. Dalam pemrograman
komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah
program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari
program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk
melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa
pengguna menggunakan program atau permintaan bersamaan dari program lain yang
sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses.
Thread memungkinkan program untuk mengetahui user sedang masuk didalam program
secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah
satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus
dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu
menyimpan isi register saat program interrupted dan restores ketika memberikan
program kontrol lagi.
Sebagian besar komputer hanya
dapat mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka
beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan
melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan
setiap program “giliran” pada prosesnya, maka itu memerlukan untuk menunggu
sementara program lain mendapat giliran. Masing-masing program dipandang oleh sistem
operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan
terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam
sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan
memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program
memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu
menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan
program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O
selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada
thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan
untuk kedua multitasking dan multithreading. Mereka juga memungkinkan multithreading
dalam proses program agar sistem tersebut disimpan dan menciptakan proses baru untuk setiap thread.
Contohnya sebuah web browser
mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang
lain berfungsi sebagai penerima data dari network. Threading dibagi menjadi 2 :
- Static Threading
Teknik ini biasa digunakan untuk
komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya.
Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program
counter dan mengeksekusi program secara independen. Sistem operasi menempatkan
satu thread pada prosesor dan menukarnya dengan thread lain yang hendak
menggunakan prosesor itu.
Mekanisme ini terhitung lambat,
karenanya disebut dengan static. Selain itu teknik ini tidak mudah diterapkan
dan rentan kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara
thread-thread menyebabkan load balancing-nya cukup rumit. Untuk memudahkannya
programmer harus menggunakan protocol komunikasi yang kompleks untuk menerapkan
scheduler load balancing. Kondisi ini mendorong pemunculan concurrency
platforms yang menyediakan layer untuk mengkoordinasi, menjadwalkan, dan
mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun
sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan
compiler dan pendukung runtime-nya.
- Dynamic Multithreading
Teknik ini merupakan pengembangan
dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya
programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan
kerumitan lain yang ada pada static threading. Concurrency platform ini
menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun
platformnya masih dalam pengembangan namun secara umum mendukung dua fitur :
nested parallelism dan parallel loops.
Nested parallelism memungkinkan
sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur
katak) sehingga program utama tetap berjalan sementara subroutine menghitung
hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan
iterasi loop dilakukan secara bersamaan.
Referensi :
https://id.wikipedia.org/wiki/Komputasi_paralel
http://muhammadsubhansulaiman.blogspot.com/2016/06/pengantar-thread-programming-threading.html
http://ahmadirsyad09.blogspot.com/2016/05/pengantar-thread-programming.html
Komentar
Posting Komentar