Sebelumnya kalian pasti pernah mendengar kata thread dan IPC, kan? Nah, disini kita akan membahas berbagai hal mengenai Thread dan IPC tersebut.
Pertama kita akan membahas thread, apa itu thread?
Thread adalah bagian kecil dari suatu proses yang bisa di jadwalkan oleh sistem operasi. Thread juga disebut sebagai proses ringan (lightweight).
Thread dibagi menjadi 2 jenis, Single Threading dan Multi Threading.
a. Single Threading
Adalah sebuah proses yang hanya memiliki satu thread yang berjalan. Biasanya fungsi thread ini digunakan sebagai pengendali jalannya proses.
b. Multi Threading
Adalah proses yang memiliki lebih dari satu thread yang berjalan didalamnya, sehingga dalam hal ini proses dapat menjalankan lebih dari satu tugas dalam satu waktu.
Kedua, kita akan membahas IPC. IPC sendiri memiliki kepanjangan Inter Process Communication. IPC adalah cara atau mekanisme pertukaran data antara satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer yang sama, atau komputer jarak jauh yang terhubung melalui jaringan.
a. Pipes
Pipe merupakan komunikasi sequensial antarproses yang saling terelasi, namun pipe memiliki kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan, dan komunikasinya yang dilakukan adalah secara sequensial.
b. Message Queue
Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan 2 operasi yaitu mengirim pesan dan menerima pesan.
c. Shared Memory
Sistem berbagi memori merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
d. Socket
Bentuk dari komunikasi yaitu UDP dan TCP menggunakan abstraksi socket yang menyediakan endpoint untuk komunikasi antar proses. Socket bisa dijalankan di berbagai platform (BSD UNIIX, UNIX, Linux, Windows dan Machintos OS)
Berikut ini adalah contoh kodingan untuk membuat suatu program yang dapat memainkan, pause, dan continue suatu lagu dan juga menampilkan playlist lagu yang tersedia.
#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
pthread_t tid[10];
int n;
void* playandcount(void *arg){
unsigned long i=0;
pthread_t id=pthread_self();
int iter;
if(pthread_equal(id,tid[1])){
system("clear");
printf("\nHelp List\n");
printf("Press the below number to execute command\n");
printf("1===Show Help command\n");
printf("2===Show playlist\n");
printf("3===Play\n");
printf("4===Pause after x sec\n");
printf("5===Continue after x sec\n");
printf("6===Stop after x sec\n");
}
else if(pthread_equal(id,tid[2])){
system("clear");
system("ls | grep .mp3");
}
else if(pthread_equal(id,tid[3])){
system("clear");
system("mpg123 Try.mp3");
}
else if(pthread_equal(id, tid[4])){
system("clear");
sleep(n);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id, tid[5])){
system("clear");
sleep(n);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[6])){
system("clear");
sleep(n);
system("pkill mpg123");
}
return NULL;
}
int main(void){
system("clear");
while(1){
int flag=0;
int comm;
int i=0;
int err=0;
scanf("%d", &comm);
if(comm==4 || comm==5 || comm==6)
scanf("%d", &n);
printf("\n\n");
if (err!=0)
printf("\ncan't create thread : [%s]", strerror(err));
else
err=pthread_create(&(tid[comm]), NULL, &playandcount, NULL);
}
return 0;
}


Tidak ada komentar:
Posting Komentar