Thread juga disebut sebagai proses ringan (lightweight).
a. Single Threading
Adalah sebuah proses yang hanya memiliki satu thread yang berjalan . Biasanya fungsi thread ini digunakan sebagai penggendali jalannya proses.
b. Multi Thread
Adalah proses yang dimiliki lebih dari satu thread yang berjalan didalamnya , sehingga dalam hal ini proses dapat menjalankan lebih dari satu thread.
Cukup sekilas tentang thread , sekarang kita akan mengoding di linux ubuntu untuk memutar musik di linux.
berikut kodungnya :
#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include <dirent.h>
pthread_t tid[5];
char lagu[100];
int t;
void* playandmenu (void *arg)
{
unsigned long i = 0;
pthread_t id = pthread_self();
int flag;
if(pthread_equal(id,tid[0]))
{
printf("1. list\n2. play [Nama_lagu]\n3. pause\n4. continue\n5. stop\n");
fflush(stdout);
}
else if(pthread_equal(id,tid[1]))
{
system("ls /home/aditya/Modul3/Nomor1/Playlist/ | grep .mp3");
}
else if(pthread_equal(id,tid[2]))
{
system("pkill mpg123");
system("clear");
char popup[]="mpg123 -q /home/aditya/Modul3/Nomor1/Playlist/";
strcat(popup,lagu);
system(popup);
}
else if(pthread_equal(id,tid[3]))
{
sleep(t);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id,tid[4]))
{
sleep(t);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[5]))
{
sleep(t);
system("pkill mpg123");
system("clear");
}
return NULL;
}
int main(void)
{
while(1)
{
int err;
char pilihan[10];
scanf("%s", pilihan);
system("clear");
if(strcmp(pilihan,"help")==0)
{
system("clear");
err=pthread_create(&(tid[0]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"list")==0)
{
system("clear");
err=pthread_create(&(tid[1]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"play")==0)
{
system("clear");
scanf(" %[^\t\n]s",lagu);
err=pthread_create(&(tid[2]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"pause")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[3]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"continue")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[4]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"stop")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[5]), NULL, &playandmenu, NULL);
}
}
return 0;
}
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include <dirent.h>
pthread_t tid[5];
char lagu[100];
int t;
void* playandmenu (void *arg)
{
unsigned long i = 0;
pthread_t id = pthread_self();
int flag;
if(pthread_equal(id,tid[0]))
{
printf("1. list\n2. play [Nama_lagu]\n3. pause\n4. continue\n5. stop\n");
fflush(stdout);
}
else if(pthread_equal(id,tid[1]))
{
system("ls /home/aditya/Modul3/Nomor1/Playlist/ | grep .mp3");
}
else if(pthread_equal(id,tid[2]))
{
system("pkill mpg123");
system("clear");
char popup[]="mpg123 -q /home/aditya/Modul3/Nomor1/Playlist/";
strcat(popup,lagu);
system(popup);
}
else if(pthread_equal(id,tid[3]))
{
sleep(t);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id,tid[4]))
{
sleep(t);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[5]))
{
sleep(t);
system("pkill mpg123");
system("clear");
}
return NULL;
}
int main(void)
{
while(1)
{
int err;
char pilihan[10];
scanf("%s", pilihan);
system("clear");
if(strcmp(pilihan,"help")==0)
{
system("clear");
err=pthread_create(&(tid[0]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"list")==0)
{
system("clear");
err=pthread_create(&(tid[1]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"play")==0)
{
system("clear");
scanf(" %[^\t\n]s",lagu);
err=pthread_create(&(tid[2]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"pause")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[3]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"continue")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[4]), NULL, &playandmenu, NULL);
}
else if(strcmp(pilihan,"stop")==0)
{
system("clear");
scanf("%d", &t);
err=pthread_create(&(tid[5]), NULL, &playandmenu, NULL);
}
}
return 0;
}
saya menggunakan 5 thread dalam kodingan ini , thread pertama untuk melihat list lagu di folder playlist yang anda buat, thread kedua untuk memutar musik , thread ketiga untuk mem-pause musik, thread ke empat untuk continue musik yan g telah di pause , thread ke lima untuk men-stop musik. Sebelum itu pastikan anda telah mengistall "MPG123" player pada linux anda.
Kodingan ini harus disertai folder playlist yang berisi lagu akan dimainkan.
selamat mencoba :)
Tidak ada komentar:
Posting Komentar