Thread
Thread pada dasarnya merupakan bagian yang lebih kecil dari proses. Thread sendiri merupakan bagian dari proses. Perbedaan yang mendasar antara proses dengan thread adalah proses tidak dapat mengakses ruang lain yang menjadi milik proses lain, sedangkan thread dapat mengakses ruang yang terdapat di thread lainnya. Dalam sebuah thread terdapat :
- Thread state
- Saved thread Context saat tidak berjalan
- Execuiton stack
- Local variables
- Akses ke memory dan resource yang dimiliki oleh prosesnya
Keuntungan yang dimiliki thread antara lain :
- Waktu pembuatan yang lebih cepat
- Waktu pemberhentian yang lebih cepat
- Waktu pergantian antar thread lebih cepat daripada antar proses
- Komunikasi antar thread lebih efisien
Thread State dapat dibagi menjadi beberapa ciri :
- Spawn, Thread muncul, atau dibuat oleh proses / OS
- Block, Thread menunggu sebuah event
- Unblock, Ketika event yang ditunggu oleh thread muncul
- Finish, Thread selesai
Implementasi dalam Thread dibagi menjadi 3 macam, user level thread, kernel level thread, dan hybrid level thread.
1) User Level Thread
Ciri - cirinya :
- Kernel Tidak mengetahui keberadaan thread
- Thread management dilakukan oleh aplikasi user level/ library
- Thread switching tidak membutuhkan kernel mode privileges
- Dapat berjalan di berbagai OS
Kerugiannya
- Satu thread blocked, thread lain pada proses yang sama juga blocked
- Dua thread pada proses yang sama tidak dapat berjalan bersamaan pada dua prosesor
2) Kernel Level Thread
Ciri - Cirinya : Thread management dilakukan oleh kernel
Keuntungannya
- Thread pada proses yang sama dapat dijalankan pada prosesor yang berbeda
- Kernel routines juga dapat multithreading
- Thread switching antar proses yang sama tetap melibatkan kernel
- Dapat memperlambat
3) Hybrid Level Thread
Ciri - cirinya :
- Ada sejumlah kernel level thread yang dipetakan ke sejumlah user level thread
- Pembuatan thread, scheduling, sinkronisasi dilakukan di user space
Thread di Linux
GNU / Linux menggunakan POSIX Standard Thread API atau dikenal dengan nama pthread. Program dengan thread harus di compile dengan option : -lpthread. Setiap thread dalam sebuah program diidentifikasikan dengan ID dengan type : pthread_t. Fungsi untuk membuat thread adalah : int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); Dengan parameter :
- 1 ----------> thread ID
- 2 ----------> thread atribut (NULL untuk default atribut)
- 3 ----------> fungsi yang ingin dijalankan
- 4 ----------> parameter untuk fungsi yang dijalankan
Beberapa fungsi lain di thread:
- Pthread_self() ; digunakan untuk mengetahui thread ID dari thread yang sedang aktif
- Pthread_equal(); Membandingkan thread ID yang satu dengan yang lain, apakah sama atau tidak
Tidak ada komentar:
Posting Komentar