Jumat, 28 November 2014

Thread Programming


A. Thread di LINUX (C language)


Thread di Linux menggunakan POSIX (Portable Operating System Interface for UNIX) standard Thread API. POSIX adalah adalah sebuah standar yang dicetuskan oleh IEEE (Institute of Electrical and Electronics Engineers yang mendefinisikan sekumpulan layanan dalam sistem operasi. Oleh karena itu, program dengan thread di Linix harus dicompile dengan option -lpthread. Library untuk thread sendiri adalah #include<pthread.h>

B. Pembuatan Thread
     Thread mempunyai Thread ID dengan type pthread_t. Untuk membuat thread, kita harus menggunakan fungsi :

     int pthread_create (pthread_t *thread, const pthread_attr_t *attr, void* (*namafungsi)(*void), void *arg);

     Penjelasan  parameter:

  1. pthread_t *thread = thread ID
  2. const pthread_attr_t *attr = thread attribute (NULL untuk default attribute)
  3. void* (*namafungsi) (*void) = nama fungsi yang akan dijalankan oleh thread
  4. void *arg = parameter untuk fungsi yang dijalankan. Apabila parameter yang dibutuhkan banyak, maka harus menggunakan struct

C. Menunggu Thread

     Pengeksekusian thread tidak dapat dikontrol oleh user, karena penjadwalan thread akan dilakukkan oleh OS. Oleh karena itu user tidak tahu kapan thread akan dieksekusi. Untuk menanggulangi hal itu, maka digunakan pthread_join  yang bertujuan untuk menunggu suatu pengeksekusian thread selesai, baru thread yang lain akan dijalankan.

     pthread_join (pthread_t thread, void **retval);


Penjelasan  parameter:
  1. pthread_t *thread = thread ID
  2. void **retval = return value dari fungsi yang dipanggil.

D. Membatalkan Thread

     Untuk membatalkan pengeksekusian sebuah thread, bisa menggunakan perintah pthread_cancel.

    pthread_cancel (pthread_t thread)

Penjelasan  parameter:
  1. pthread_t *thread = thread ID
Library pthread.h juga menyediakan perintah :

  • PTHREAD_CANCEL_ENABLE untuk membuat sebuah thread dapat dicancel
  • PTHREAD_CANCEL_DISABLE untuk membuat sebuah thread tidak dapat dicancel

E. Keluar dari Thread

     Untuk keluar dari sebuah thread, bisa menggunakan perintah pthread_exit. pthread_exit diletakkan pada akhir sebuah fungsi (routine)
   
   pthread_exit(void *value_ptr)

Penjelasan  parameter:
  1. void *value_ptr = return value dari parameter suatu thread

E. Membandingkan (compare) Dua Thread

     Untuk membandingkan dua buah thread bisa menggunakan pthread_equal. JIka thread sama maka akan mengembalikan return value tidak 0, dan 0 apabila kedua thread tidak sama.

pthread_equal(pthread_t thread1,pthread_t thread2);

Penjelasan  parameter:
  1. pthread_t thread1 = thread ID dari thread 1
  2. pthread_t thread2 = thread ID dari thread 2

0 komentar:

Posting Komentar