Sekarang saya akan pos tentang thread dan thread programming yang biasa berada dalam suatu proses.
Thread & Proses
Thread merupakan sekumpulan baris instruksi yang alurnya berjalan secara sekuensial di prosesor. Jadi simpelnya thread adalah bagian dari sautu proses atau bisa juga disebut sebagai proses kecil.
Lalu, dalam sistem operasi kita mengenal istilah multithreading yang dapat didefinisikan suatu OS mendukung sejumlah thread dieksekusi dalam sebuah proses.
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
Contoh Penggunaan Thread
-Foreground dan background Work
-Asynchronous Processing
Thread State
-Spawn
-Thread muncul
-Block
-Thread menunggu event
-Unblock
-Terjadi saat event telah terjadi
Finish
-Selesai menjalankan thread
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
Kernel Level Thread
Ciri-ciri :
-Thread management dilakukan kernel
Keuntungan :
-Tidak ada proses yang terblok
Kerugian :
-Membutuhkan kernel mode priviledge sehingga menjadi lebih lambat
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
Thread Programming
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.
Nah, sekian post saya kali ini semoga bermanfaat.
Home
»
»Unlabelled
» Thread Proses dan Thread Programming
Sabtu, 08 November 2014
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar