Jumat, 06 November 2015

Life on a Thread

Halo temen - temen sekalian, balik lagi di blog saya. Kali ini, saya akan membahas tentang sesuatu yang bernama thread. Walaupun judulnya seperti itu, tapi sebenarnya itu biar keren dan menarik wkwkwk. Padahal kita akan membahas thread dalam komputer.

Jadi di dalam komputer, ada yang dinamakan thread dalam komputer. Thread ini digunakan untuk menjalankan dua aktivitas dalam waktu yang bersamaan. Metode thread biasanya digunakan pada web browser, music player, dan aplikasi - aplikasi lainnya. Untuk memperjelas, saya akan mencontohkannya dalam linux. Kali ini, saya akan membuat sebuah music player yang dijalankan menggunakan terminal. Untuk musix player ini, sebenarnya saya tidak membuatnya. Saya hanya menggunakan music player yang ada, yang saya gunakan dikodingan ini adalah mpg123, dan menjalankannya melalui terminal.

Jadi, music player yang akan saya buat memimliki beberapa spesifikasi yaitu:
  1. Jika kita menginputkan "help" maka akan keluar semua fitur - fitur yang bisa dilakukan oleh music player ini
  2. Jika kita menginputkan "list" maka terminal akan menampilkan semua lagu yang ada di dalam folder
  3. Jika kita menginputkan "play" maka kita bisa memilih lagu dari list dan memainkan lagu dengan nama file seperti yang diinputkan
  4. Jika kita menginputkan "pause" maka kita akan mempause lagu yang sedang dimainkan setelah jeda beberapa detik. Yang detiknya kita inputkan sebelumnya
  5. Jika kita menginputkan "continue" maka lagu yang sedang dipause akan dimainkan kembali setelah jeda beberapa detik. Yang detiknya kita inputkan terlebih dahulu
  6. Jika kita menginputkan "stop" maka lagu yang akan dimainkan dihentikan setelah jeda beberapa detik. Yang detiknya kita inputkan terlebih dahulu
  7. Jika kita menginputkan "exit" maka program music player akan dihentikan
Yang pertama kali kita lakukan untuk mengimplementasikan thread pastinya membuat thread itu sendiri. Inisialisasi dilakukan seperti ini:


Pertama thread diinisialisasi dengan fungsi diatas. Thread diinisialisasi di baris sebelum void. Thread yang saya buat pada kodingan ini berbentuk array, sehingga saya bisa menggunakan thread lebih dari satu. Array yang saya inisialisasi kan didalam fungsi void diatas adalah array untuk menyambungkan string agar nantinya bisa dieksekusi dengan menggunakan fungsi system. Lalu bila kita perhatikan, ada if yang didalamnya memiliki beberapa command. If tersebut digunakan untuk menjalankan thread pada array ke - 0. Fungsi tersebut berfungsi sebagai thread yang akan menjalankan lagu yang kita pilih namanya terlebih dahulu.


Setelah selesai dengan inisialisasi thread, maka kita langsung masuk ke main. Pertama terminal akan meminta inputan perintah seperti yang sudah saya sebutkan sebelumnya. Program ini akan terus berjalan selama belum diinputkan perintah "exit" maka while yang ada memiliki kondisi while(1). Lalu if yang pertama merupakan if untuk menjalankan perintah help. Untuk perintah ini tinggal kita tampilkan perintah - perintah apa saja yang bisa diinputkan.


If diatas merupakan fungsi untuk menjalankan perintah "list". Fungsi ini juga sederhana, tinggal kita menampilkan semua file yang memiliki extension file .mp3. Caranya dengan menggunakan perintah system("ls | grep .mp3"). Seperti yang sudah kita pakai sebelumnya, ls merupakan fungsi untuk menampilkan semua file yang ada pada direktori folder yang sedang kita buka, lalu grep merupakan fungsi untuk mengambil string tertentu yang pada kodingan diatas kita mengambil string yang memiliki kata .mp3. Jika kita mengambil semua string yang ada kata .mp3 maka kita akan mendapatkan lagu - lagu yang ada di folder tersebut.


If diatas merupakan fungsi untuk menjalankan perintah play. Seperti yang sudah saya jelaskan saat menginisialisasikan, thread pada kodingan ini digunakan untuk memainkan lagu. Maka dari itu, di main tinggal kita panggil threadnya. Kenapa disitu ada while? Karena terkadang pembuatan thread bisa error dan thread tidak terbentuk. Maka dari itu, saya membuat while agar thread akan terus dibuat jika thread gagal dibuat. Jika sudah terbuat, maka akan keluar dari while sehingga tidak terus menerus membuat thread.


Fungsi diatas berfungsi untuk menjalankan perintah pause. Pertama fungsi ini mengscan angka yang akan dijadikan lamanya detik untuk delay. Setelah itu, dijalankan sleep() sejumlah detik yang sudah diinputkan. Sleep digunakan untuk melakukan delay, jadi selama detik yang diinputkan, komputer diam dan menunggu. Setelah itu komputer menjalankan system("pkill -STOP mp123"). Fungsi ini digunakan untuk mempause lagu yang dijalankan di mpg123.


Setelah pause, ada fitur continue yang bisa kita lihat diatas. Sama seperti pause, kita pertama menginputkan detik dari delay. Setelah delay, kita menjalan kan system("pkill -CONT mpg123") untuk melanjutkan lagu yang sebelumya telah dipause.


Sama seperti pause dan continue, stop juga pertama menginputkan detik untuk delaynya. Lalu setelah delay berlangsung maka perintah system("pkill mpg123") dijalankan. Perintah ini berfungsi untuk menclose mpg123 dari process sehingga lagu yang dimainkan ikut berhenti


Dan yang terakhir ada perintah exit. Untuk perintah ini tinggal kita menjalankan break untuk keluar dari while yang pertama. Bila kita sudah keluar, otomatis programnya akan selesai dijalankan. Lalu bila kalian perhatikan, setelah else if, diluarnya, ada perintah tambahan lagi untuk mengscan perintah baru. Adanya baris itu untuk menginputkan command selanjutnya bila kita tidak menginputkan exit. 

Yap, segitu saja yang saya punya. Mungkin gak banyak tapi saya harap bisa bermanfaat buat kalian para pembaca. Jangan lupa tuliskan komentar agar saya bisa tau dimana kesalah - kesalahan dalam blog ini dan dapat membuatnya lebih baik lagi. Terima kasih, sampai jumpa



Tidak ada komentar:

Posting Komentar