-->
g2QFCKwavghUp2yzjKrIFwEeG13RASCerFTCMH35

Pengertian PThread

Pthread

Halo sudah 2 minggu belum update, ok kesempatan kali ini saya ingin share salah satu ilmu yang sudah saya dapatkan lagi yaitu pthread atau bisa disebut juga POSIX thread

1. Dasar Teori
Library POSIX thread adalah thread standar berbasis API untuk C/C++. ini dapat mengembangkan satu  proses untuk mengijinkan proses yang lainya untuk ikut berproses. ini srangat efektif untuk sistem bermultiprosesor dimana alur proses bisa dialokasikan  untuk menjalankan prosesor lain sehingga kecepattan proses menjadi lebih cepat. selain pada sistem multiprosesor, kegunaan ini bisa didapatkan juga di sistem uniprosesor yang menggunakan I//O dan fungsi sistem lainya yang mungkin bisa mematikan proses lainya.  semua threads yang sedang  beproses memiliki kesamaan kapasitas alamat. thread akan dipanggil dengan mendefinisikan suatu fungsi dengan argumenya yang akan diproses dengan thread lainya. jadi kesimpulanya adalah kegunaan POSIX threads adalah agar suatu software dapat berjalan dengan lebih cepat.

 fungsi-fungsi yang ada pada library pthread.h:
  •  pthread_t = tipe data thread
  •  pthread_mutex_t= tipe data mutex thread
  •  pthread_create = int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
    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
  • 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
  • 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.
  • 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
  • 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
  • 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. Objek yang dihancurkan bisa diinisialisasi masukan diberikan .
2. Contoh Soal:
 persoalan:
     Pembagian Kelompok untuk mengerjakan tugas secara berkelompok secara   acak. asumsikan bahwa anda seorang dosen/guru dan anda ingin membuat kelompok untuk mengerjakan suatu tugas. asumsikan bahwa siswa dikelas anda berjumlah 48 dan per kelompok terdiri atas 4 orang.
solusi:
Karena pthread berjalan secara serentak maka thread keberapapun diurutkan secara random sehingga kita tak tau pasti urutan ke berapa terlebih dahulu yang keluar. maka sebagai solusi pthread termasuk pthread yang tepat
berikut adalah instruksinnya:
  • untuk pertama-tama kita definisikan terlebih dahulu beberapa fungsi yang akan dipakai dan sebuah konstanta berupa jumlah thread maksimal/Jumlah Siswa yaitu 48 
  • selanjutnya kita langsung main ke fungsi yang akan dijalankan oleh POSIX thread yaitu fungsi pengelompokan, karena berjalan secara bersamaan maka kita membutuhkan mutex lock sehingga pengelompokan dilaksanakan secara stabil walaupun secara bersamaan. lalu untuk penulisan kelompok jadi disini kita mendeklarasikan variable counter dan counter tersebut akan di modulus 4 sehingga kelompok akan di shift ke kelompok berikutnya apabila counter tersebut menghasilkan 0 apabila di modulus 4. lalu langsung kita memanfaatkan id thread yang sebagai nomor urut siswa disini lalu langsung di print nomor urut mahasiswa tsb, lalu counter di increment dan mutexnya di unlock.

  • di int main kita hanya perlu mendeklarasikan satu variable threads yang berarray, lalu langsung memulai perulangan untuk membuat thread tersebut dan memulai fungsi pengelompokan didalam thread tersebut. dan selesai. jangan lupa dengan pthread_exit. agar thread bisa berhenti berproses.


    Berikut hasil compile dan run'nya:
Sumber :renwatatsujindewaarimasen.blogspot.co.id
Related Posts

Related Posts

Post a Comment