A. Pengertian
Thread
adalah merupakan sekumpulan baris instruksi yang alurnya berjalan secara
sekuensial di prosesor. Jadi simpelnya thread adalah baguan dari suatu proses
atau bisa juga disebut proses kecil.
Lalu, dalam sistem operasi
kita mengenal istilah multithreading yang dapat didefinisikan suatu OS
mendukung sejumlah thread dieksekusi dalam sebuah proses.
B. Thread
Programming
Ms. Dos
merupakan salah contoh OS yang hanya mampu menjalankan satu proses dengan hanya
1 thread. Sebaliknya Unix Family 1980 mendukung banyak proses tapi dengan
setiap proses hanya memiliki satu thread. Contoh OS yang mampu menjalankan
banyak thread dalam suatu proses yaitu, Mac, Windows dan Linux, selain itu
bahasa yang memiliki OS mini seperti java yang memiliki Java Virtual Machine
juga satu proses yang mampu menjalankan banyak thread.
Keuntungan Penggunaan Thread
-komunikasi thread lebih
efisien
-waktu pembuatan lebih cepat
-waktu pemberhentian lebih
cepat
-waktu penggantian antar
thread lebih cepat
Kerugian penggunaan Thread
-keamanan yang kurang karena
penggunaan shared data
Contoh Aplikasi :
-Google Chrome : menggunakan
multiproses
-Mozilla Firefox : menggunakan multithread
-Apache : menggunakan multiproses dan
multithread
C. Contoh Penggunaan Thread
- Foreground dan background Work
- Asynchronous Processing
D. Jenis-jenis Thread
a. Thread State
-Spawn
-Thread muncul
-Block
-Thread menunggu event
-Unblock
-Terjadi saat event telah terjadi
-Finish
-Selesai menjalankan thread
b. User Level Thread
Ciri-ciri :
-Kernel tidak mengetahui keberadaan
thread
-Thread manajemen dilakukan aplikasi
user level
Keuntungan :
-Tidak membutuhkan kernel mode
priviledge
-Dapat berjalan di berbagai proses
Kerugian :
-Satu thread blocked, yang lain juga
diblock
c. Kernel Level Thread
Ciri-ciri :
-Thread management dilakukan kernel
Keuntungan :
-Tidak ada proses yang terblok
Kerugian :
-Membutuhkan kernel mode priviledge
sehingga menjadi lebih lambat
d. Hybrid Level Thread
Ciri-ciri :
-Ada sejumlah kernel level thread yang
dipetakan ke sejumlah user level thread
-Pembuatan thread, scheduling,
sinkronisasi dilakukan di user space
E. Thread di Linux
-GNU/Linux menggunakan POSIX
Standar Thread API
-Dikenal dengan pthread
-Program dengan thread harus
di-compile dengan "-lpthread"
contoh : gcc testhread.c -o thread –lpthread
Program diidentifikasikan
dengan thread ID
-Type data : pthread_t
Fungsi-fungsi programming
pthread :
1) pthread_t = tipe data
thread
2) pthread_mutex_t = tipe
data mutex thread
3) pthread_create = int
pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*),
void *arg);
Parameter : Pertama-->thread ID
Kedua----->thread
atribut (NULL untuk default atribut)
Ketiga----->thread
yang ingin dijalankan
Keempat-->parameter
untuk fungsi yang dijalankan
Fungsi yang digunakan untuk menciptakan
thread baru dalam suatu proses dengan atribut ditentukan oleh attr. Jika attr
diisi NULL, atribut default akan dimuat. Jika pemanggilan fungsi berhasil,
fungsi akan menyimpan ID dari thread ciptaan pada rujukan yang ditunjuk thread
4) pthread_detach = int
pthread_detach(pthread_t thread);
Fungsi ini digunakan untuk
mengindikasikan pada implementasi bahwa ruang penyimpanan thread pada thread
bisa diminta kembali ketika thread berakhir
5) pthread_cancel = int
pthread_cancel(pthread_t thread);
Fungsi ini digunakan untuk
meminta agar thread dibatalkan. Kondisi kemampuan membatalkan dan tipedari
thread yang dituju menentukan kapan pembatlan terjadi.
6) pthread_mutex_lock = int
pthread_mutex_lock(pthread_mutex_t *mutex);
Fungsi ini digunakan untuk
mengunci objek mutex yang dirujuk oleh mutex. Jika mutex sudah dikunci, thrad
pemanggil akan ditahan hingga mutex menjadi tersedia (tidak terkunci). Operasi
ini mengembalikan objek mutex yang dirujuk oleh mutex pada keadaan terkunci
dengan thread pemanggil sebagai pemiliknya
7)pthread_mutex_unlock = int pthread_mutex_unlock(pthread_mutex_t *mutex);
Fungsi ini berguna untuk membebaskan objek mutex yang dirujuk mutex. Bagaimana cara mutex dibebaskan tergantung dari tipe atribut mutex.
8) pthread_mutex_destroy = int pthread_mutex_destroy(pthread_mutex_t *mutex);
Fungsi ini menghancurkan objek mutex yang dirujuk oleh mutex, sehingga objek tersebut menjadi tidak terinisialisasi.
7)pthread_mutex_unlock = int pthread_mutex_unlock(pthread_mutex_t *mutex);
Fungsi ini berguna untuk membebaskan objek mutex yang dirujuk mutex. Bagaimana cara mutex dibebaskan tergantung dari tipe atribut mutex.
8) pthread_mutex_destroy = int pthread_mutex_destroy(pthread_mutex_t *mutex);
Fungsi ini menghancurkan objek mutex yang dirujuk oleh mutex, sehingga objek tersebut menjadi tidak terinisialisasi.
http://world-just-for-you.blogspot.com/2014/11/thread-proses-dan-thread-programming.html