[TUTORIAL] Thread Linux Menggunakan Bahasa C
Hai =))Kali ini, saya akan menjelaskan tentang thread dalam linux menggunakan bahasa C.
Jadi Thread itu sendiri merupakan metode untuk menjalankan banyak proses secara bersamaan. Dalam pemrograman C biasa, proses berjalan satu persatu sampai proses yang dalam antriannya selesai dikerjakan barulah menyelesaikan perintah selanjutnya.
Dalam metode thread, kita juga dapat menggabungkan proses yang sedang berjalan. Menjeda proses yang sedang berjalan bersamaan agar tidak terjadi data acak seperti saat menjalankan fungsi cetak.
Simple Thread
#include <pthread.h>
#include <stdio.h>
void *cetak1(){
int i;
for(i=0;i<10;i++){
printf("Thread1\n");
}
}
void *cetak2(){
int i;
for(i=0;i<15;i++){
printf("Thread2\n");
}
}
int main(){
pthread_t t1,t2;
pthread_create(&t1,NULL,&cetak1,NULL);
pthread_create(&t2,NULL,&cetak2,NULL);
}
Proses diatas akan menjalankan fungsi cetak 1 dan cetak 2 dengan berjalan bersamaan hanya saja beda jeda waktu sepersekian detik yang menyebabkan proses tidak akan berjalan konstan setiap prosesnya.
Menggabungkan Thread
#include <pthread.h>Jadi source code diatas menjelaskan bahwa semua thread akan digabungkan dengan thread yang lain sehingga thread tersebut akan selesai, ketika thread yang lain selesai, dengan kata lain menunggu thread yang lain menyelesaikan tugasnya.
#include <stdio.h>
void *cetak(){
int i;
for(i=0;i<10;i++){
printf("Thread1\n");
}
}
void *play(){
system("play audio.wav");
}
int main(){
pthread_t t1,t2;
pthread_create(&t1,NULL,&cetak,NULL);
pthread_create(&t2,NULL,&play,NULL); pthread_join(t1,NULL); pthread_join(t2,NULL);
}
Menunda Kerja Thread (Proses Thread)
Ada kalanya kita perlu menunda suatu proses yang berjalan bersamaan.
Caranya dengan menambahkan fungsi lock dan unlock pada pthread mutex..
//variable global
pthread_mutex_t lock;
void fungsi(){
pthread_mutex_lock(&lock);
// place your code here
pthread_mutex_unlock(&lock);
}
makasih mas fany postingannya :3
ReplyDelete