Di post kali ini akan membahas mengenai Thread di dalam sistem operasi. Thread itu bagian dari sebuah proses. Biasanya thread digunakan untuk menjalankan 2 aktivitas dalam waktu yang bersamaan.
Agar lebih jelasnya, ayo membuat program pemutar musik yang bisa dijalankan menggunakan terminal di linux dan berbasis konsol. Jadi nanti programnya ada fitur-fitur play, pause, stop seperti pemutar musik biasanya.
Nah, musik umum filenya kan ber-ekstensi .mp3 maka agar bisa diputar gunakan software "mpg123", jika belum ada silahkan install terlebih dahulu (bisa langsung online "sudo apt-get install mpg123"). Untuk lebih jelasnya lagi langsung ae yoo...
Musik Player mempunyai fitur-fitur :
- Help
- List
- Play
- Pause
- Continue
- Stop
Selanjutnya membuat fungsi threadnya
Thread 0. Membuat tampilan menu
Thread 2. Membuat thread play
Thread 3. Membuat thread pause
Thread 4. Membuat thread continue
Thread 5. Membuat thread stop
dan selanjutnya adalah membuat fungsi main nya (full code)
#include <stdio.h>Jalankan di terminal, simpan file menggunakan .c jangan lupa di compile lihat apa yang terjadi.
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
pthread_t tid[8];
char namalg[100];
char lg[100];
int n;
void* PlayAndCount(void *arg)
{
unsigned long i=0;
pthread_t id = pthread_self();
int iter;
if(pthread_equal(id,tid[0]))
{
//menampilkan menu
system("clear");
printf("1. Help\n");
printf("2. List\n");
printf("3. Play\n");
printf("4. Pause\n");
printf("5. Continue\n");
printf("6. Stop\n");
}
else if(pthread_equal(id,tid[1]))
{
//menampilkan list lagu
system("clear");
chdir("/home/anandi/Desktop/modul3/playlist");
system("ls|grep .mp3");
}
else if(pthread_equal(id,tid[2]))
{
//play
system("pkill mpg123");
system("clear");
snprintf(lg, sizeof(lg), "mpg123 %s", namalg);
system(lg);
}
else if(pthread_equal(id,tid[3]))
{
//pause
system("clear");
sleep(n);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id,tid[4]))
{
//continue
system("clear");
sleep(n);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[5]))
{
//stop
system("clear");
sleep(n);
system("pkill mpg123");
}
return NULL;
}
int main(void)
{
while(1)
{
char kata[100];
int err=0;
scanf("%s", kata);
if(err!=0) printf("\ncant create thread : [%s]", strerror(err));
else if(strcmp(kata, "Help")==0) err=pthread_create(&(tid[0]), NULL, &PlayAndCount, NULL);
else if(strcmp(kata, "List")==0) err=pthread_create(&(tid[1]), NULL, &PlayAndCount, NULL);
else if(strcmp(kata, "Play")==0)
{
scanf("%s", namalg);
err=pthread_create(&(tid[2]), NULL, &PlayAndCount, NULL);
}
else if(strcmp(kata, "Pause")==0)
{
scanf("%d", &n);
err=pthread_create(&(tid[3]), NULL, &PlayAndCount, NULL);
}
else if(strcmp(kata, "Continue")==0)
{
scanf("%d", &n);
err=pthread_create(&(tid[4]), NULL, &PlayAndCount, NULL);
}
else if(strcmp(kata, "Stop")==0)
{
scanf("%d", &n);
err=pthread_create(&(tid[5]), NULL, &PlayAndCount, NULL);
}
}
return 0;
}
Yak cukup sekian, cukup susah juga bagi saya wkwk, kurang sekurang kurangnya mohon maaf yang sebesar besarnya
Semoga Bermanfaat :)
Tidak ada komentar:
Posting Komentar