Kamis, 20 November 2014

Thread adalah ...... (disertai dengan contoh program)



Jika kalian sedang mencari suatu cara dengan bahasa c yang mana kalian ingin membaut beberapa proses berjalan bersamaan, nah kalian berada di tempat yang sangat tepat! Ya kalian bisa memanfaatkan thread disini. Nah sebentar, thread itu apa sih? Seperti kata kata mainstream biasanya, yakni tak kenal maka tak sayang, kita kenalan dahulu sama yang namanya thread ini.
Thread itu alur control dari sebuah proses.
Atau ada yang berkata sebagai berikut
Thread dalam sistem operasi dapat diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu ulir ke ulir lainnya) atau multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem). 
Sehingga thread tersebut bisa mengatur bagaimana sebuah proses tersebut dijalankan.
Lalu bagaimana cara membuat thread?
Secara sederhana thread sendiri bisa dibuat dengan cara seperti ini :
disini percobaannya saya akan membuat sebuah program sederhana dan ketika menjalankan program tersebut, akan diiringi dengan sebuah lagu.


#include<iostream>
//instruksi pertama utuk play lagu bernama music yang berada di folder yang sama dengan code di compile
void *playmusic(){
system("cvlc music.wav");
}
//instruksi kedua, dimana kita akan mencoba untuk menjawab pertanyaan matematika sederhana
void *berhitung(){
int level=0;
int a,b,c;
srand((unsigned)time(NULL));
while(1){
if(level==0){
a=rand()%100;
b=rand()%100;
system("clear");
printf("Berapakah hasil dari operasi matematika berikut?\n");
printf("%d + %d = ",a,b);
scanf("%d",&c);
if(a+b == c)
{
printf("YEY! Jawaban Anda Benar! Anda Berhak melaju ke tahap selanjutnya!\n");
sleep(1);
level++;
}
else printf("Ayo coba lagi! Kamu pasti bisa!\n");
sleep(1);
system("clear");
}
if(level==1){
a=rand()%15;
b=rand()%15;
printf("Berapakah hasil dari operasi matematika berikut?\n");
printf("%d x %d = ",a,b);
scanf("%d",&c);
if(a*b == c)
{
printf("YEY! Jawaban Anda Benar! Anda Berhak melaju ke tahap selanjutnya!\n");
sleep(1);
level++;
}
else printf("Ayo coba lagi! Kamu pasti bisa!\n");
sleep(1);
system("clear");
}
if(level==2){
do{
a=rand()%150;
b=rand()%20;}while(a%b!=0 && a>=15 && b>=3);
printf("Berapakah hasil dari operasi matematika berikut?\n");
printf("%d : %d = ",a,b);
scanf("%d",&c);
if(a/b == c)
{
printf("YEY! Jawaban Anda Benar! Anda Berhak melaju ke tahap selanjutnya!\n");
sleep(1);
level++;
}
else printf("Ayo coba lagi! Kamu pasti bisa!\n");
sleep(1);
system("clear");
}
if(level==3){
a=rand()%150;
b=rand()%15;
printf("Berapakah hasil dari operasi matematika berikut?\n");
printf("%d mod %d = ",a,b);
scanf("%d",&c);
if(a%b == c)
{
printf("YEY! Jawaban Anda Benar! Anda telah menyelesaikan game ini!\n");
sleep(1);
level=0;
}
else printf("Ayo coba lagi! Kamu pasti bisa!\n");
sleep(1);
system("clear");
}
}
}
//main program
int main(){
pthread_t threadsatu, threaddua;
//ini adalah tahap membuat type data thread, disini saya membuat dua thread dengan nama threadsatu dan thread dua.
pthread_create (&threadsatu, NULL, playmusic, NULL);
//ini bagian membuat thread, nah ini saya akan membuat thread yang akan menjalankan sebuah fungsi yang bernama playmusic
pthread_create (&threaddua, NULL, berhitung, NULL);
//thread yang ini akan mengeksekusi fungsi yang saya namai berhitung
nah lalu kita join kedua thread tersebut agar bisa berjalan bersamaan
//maksud saya berjalan bersamaan disini, cara kerjanya adalah dua instruksi //dijalankan bersamaan, dan ketika ada salah satu thread yang belum selesai dalam mengerjakan instruksi nya maka akan menunggu semua thread selesai mengerjakan instruksinya, dan ketika sudah selesai semua, baru thread diakhiri
}

nah dari program diatas akan menghasilkan sebuah program  yang menggunakan thread.

Ya begitulah apa yang bisa saya sampaikan sekarang, apabila ada yang saya pelajari lebih lanjut, maka akan saya tambah di post post selanjutnya, semoga post ini bisa berguna untuk kalian yang sedang belajar.
Sekian.


Tidak ada komentar:

Posting Komentar