Tuesday, November 18, 2014

Macam-macam fungsi yang ada pada pthread.h


  • pthread_t
pthread_t adalah fungsi data thread yang digunakan dalam deklarasi Variabel.

contoh: pthread_t thread1; -> membuat variabel thread1 berupa thread.

  • pthread_mutex_t
pthread_mutex_t adalah tipe data mutex thread yang digunakan dalam deklarasi variabel.

contoh: pthread_mutex_t lock; -> Membuat variabel mutex thread bernama lock.

  • pthread_create
pthread_create adalah sebuah fungsi yang digunakan untuk menciptakan thread baru dalam suatu proses dengan atribut yang ditentukan. Bila tidak di isi,maka akan diisi dengan atribut default.fungsi ini mempunyai 4 parameter.

contoh: pthread_create(&thread1,NULL,function,NULL);

  • pthread_detach
pthread_detach adalah fungsi yang digunakan untuk menandakan bahwa suatu thread telah di-detach.Thread yang detached bila di-eliminate/berakhir,Maka resourceyang digunakan akan diminta kembali ke sistem secara otomatis.

contoh: pthread_detach(thread1); ->menandakan bahwa thread1 di-detach.

  • pthread_cancel
pthread_cancel adalah fungsi yang digunakan untuk mengirim permintaan pembatalan pada suatu thread.Kapan terjadinya proses pembatalan tergantung pada atribut yang berada dalam kontrol thread tersebut.

contoh: pthread_cancel (thread1);

  • pthread_mutex_lock
pthread_mutex_lock adalah fungsi yang digunakan untuk mengunci sebuah mutex thread.Suatu mutex yang telah di-lock akan memblok pemanggilan thread sampai mutex tidak di-lock.

contoh: pthread_mutex_lock (&thread1); -> membuat mutex thread1 menjadi terkunci.

  • pthread_mutex_unlock
pthread_mutex_unlock adalah fungsi yang digunakan untuk melepas status lock pada sebuah mutex. Oleh karena itu,fungsi ini harus dipanggil terhadap suatu mutex yang sebelumnya sudah di-lock.

contoh:pthread_mutex_unlock(&thread1); ->membuat mutex thread1 menjadi terkunci.

  • pthread_mutex_destroy
pthread_mutex_destroy adalah fungsi yang digunakan untuk menghancurkan suatu mutex.Mutex yang dihancurkan tidak dapat diakses lagi dan seakan-akan tidak pernah diinisialisasi.

contoh: pthread_mutex_destroy(&thread1); -> akan menghancurkan thread1 yang sebelumnya sudah dideklarasi.


  • pthread_exit
pthread_exit adalah fungsi yang digunakan untuk menghentikan pemanggilan thread.Fungsi ini memiliki 1 parameter,yaitu return value yang bisa digunakan untuk thread lain dalam proses yang sama.

contoh: pthread_exit(*return_value);

  • pthread_join
pthread_join adalah fungsi untuk melakukan penggabungan dengan thread lain yang telah di-terminasi (telah di exit).Bila thread yang ingin di-join belum diterminasi,Maka fungsi ini akan menunggu hingga thread yang diinginkan telah terminated.

contoh:pthread_join(thread1,* return_value);

Wednesday, November 5, 2014

IPC : Semaphore

Perngertian dan fungsi dari semaphore
●Semaphore adalah sebuah variabel yang dilindungi atau tipe data abstrak yang digunakan untuk membatasi akses ke sumber daya bersama seperti shared memory dalam suatu lingkungan pemrograman paralel.
Semaphore biasanya digunakan untuk memonitor dan mengontrol ketersediaan system resource seperti dalam shared memory atau untuk menghindari terjadinya konkurensi.

Semget dan semctl digunakan untuk mengalokasikan dan membebaskan semaphore.

Contoh Implementasi Semaphore dalam bahasa pemograman C :

#include <semaphore.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>

int main(int argc, char **argv)
{
  int fd, i,count=0,nloop=10,zero=0,*ptr;
  sem_t mutex;

  fd = open("log.txt",O_RDWR|O_CREAT,S_IRWXU);
  write(fd,&zero,sizeof(int));
  ptr = mmap(NULL,sizeof(int),PROT_READ |PROT_WRITE,MAP_SHARED,fd,0);
  close(fd);

  if( sem_init(&mutex,1,1) < 0)
    {
      perror("semaphore initilization");
      exit(0);
    }
  if (fork() == 0) {
    for (i = 0; i < nloop; i++) {
      sem_wait(&mutex);
      printf("child entered crititical section: %d\n", (*ptr)++);
      sleep(2);
      printf("child leaving critical section\n");
      sem_post(&mutex);
      sleep(1);
    }
    exit(0);
  }
  for (i = 0; i < nloop; i++) {
    sem_wait(&mutex);
    printf("parent entered critical section: %d\n", (*ptr)++);
    sleep(2);
    printf("parent leaving critical section\n");
    sem_post(&mutex);
    sleep(1);
  }
  exit(0);
}

Pengertian IPC dan macam-macam IPC

IPC adalah singkatan dari Inter Process Communicationatau komunikasi antar proses

Pengertian dari IPC itu sendiri adalah suatu mekanisme pertukaran data antar satu proses dengan proses lainnya, baik itu yang terjadi didalam satu komputer yang sama maupun yang terjadi antara komputer yang terhubung dengan jaringan

Adapun Jenis-Jenis IPC ada 5 metode yaitu:

1.Shared Memory

2. Pipes

3. Semaphore

4. Message Queue

5.Socket