Anda di halaman 1dari 2

Dengan makin berkembangnya multicore processing, akan ada banyak aplikasi yang

memiliki ratusan atau ribuan threads, contohnya adalah multithread pada webserver. Dengan
begini, merancang aplikasi semacam itu memiliki banyak masalah seperti identifikasi,
pemisahan data, ketergantungan data, dan ketepatan hasil program. Solusi yang dipakai untuk
mengatasi hal tersebut adalah Implicit Threading yang merupakan pembuatan dan
manajemen thread yang dilakukan oleh compiler dan run-time library, bukan programmer.

Metode Implicit Threading


1. Thread Pools
Multithread pada sebuah web server, ketika server menerima request, maka server
akan membuat thread terpisah untuk melayani request. Membuat thread terpisah lebih
unggul daripada membuat proses terpisah, tetapi multithread server tetap memiliki
masalah. Masalah pertama adalah terkait jumlah waktu yang dibutuhkan untuk membuat
thread yang tentu akan dibuang ketika selesai. Masalah kedua adalah ketika seluruh
request dilayani di thread baru, thread yang aktif secara bersamaan tidak dibatasi di
system, thread yang banyak akan menghabiskan sumber daya system seperti waktu dan
memori CPU. Untuk mengatasi masalah ini digunakanlah Thread Pool.
Konsep dari Thread Pools sendiri adalah untuk membuat sejumlah thread pada saat
proses dimulai dan menempatkannya ke dalam pool, yang merupaka tempat
dikumpulkannya thread-thread yang ada. Ketika server menerima request, maka thread
yang ada di pool akan dipanggil dan akan diteruskan kepada thread yang dapat melayani
request tersebut, setelah selesai, thread tersebut akan Kembali ke dalam pool.
Kelebihan dari thread pools :
- Lebih cepat daripada membuat thread baru setiap kali ada tugas
- Thread pool dapat membatasi jumlah threa yang dibuat sekali waktu
- Ada pemisahan bagian antara tugas yang akan dikerjakan dengan pembuatan thread
- Sebuah tugas dapat dilakukan secara berulang
2. OpenMP
OpenMP adalah set dari arahan compiler serta API untuk program yang dibuat dalam
Bahasa C, C++ atau Fortran yang menyediakan dukungan untuk pemrograman parallel
dalam lingkup shared-memory. OpenMP mengidentifikasi Paralell Regions atau blok
kode yang dapat berjalan secara parallel.
#pragma omp parallel
Akan membuat compiler membuat thread sebanyak core yang dimiliki mesin, dan untuk
menjalankan blok kode parallel di setiap thread.

#pragma omp parallel for for(i=0;i<N;i++) {


c[i] = a[i] + b[i];
}

OpenMP memungkinkan developer untuk memilih tingkat paralelisme. Misalnya, jumlah


thread dapat diatur sebanyak yang mereka mau dan memungkinkan developer untuk
mengidentifikasi apakah data dibagikan antar thread atau pribadi kepada suatu thread.

3. Grand Central Dispatch


Teknologi untuk system operasi Mac OS X dan IOS, merupakan kombinasi ekstensi
dengan Bahasa C, sebuah API, dan run-time library yang memungkinkan developer untuk
mengidentifikasi blok kode yang dijalankan secara parallel. GCD juga mengelola
Sebagian besar detail pada thread.

GCD menjadwalkan blok kode dengan menempatkannya pada salah satu dari beberapa
dispatch queue (serial dan concurrent).
Blok yang ditempatkan pada serial queue akan dihapus dari urutan FIFO. Setelah blok
dikeluarkan, block tersbut harus menyelesaikan eksekusinya dahulu sebelum blok lain
dikeluarkan.
Blok yang ditempatkan pada concurrent queue juga akan dihapus dari urutan FIFO, tapi
beberapa blok dapat dihapus dalam satu waktu, sehingga memungkinkan beberapa blok
mengeksekusi secara parallel. Ada tiga urutan yang dibedakan menurut prioritas : rendah,
default, dan tinggi. Blok dengan prioritas tinggi ditempatkan pada dispatch queue
prioritas tinggi.

Anda mungkin juga menyukai