Arti istilah Multithreading dianggap berkaitan erat dengan pengertian
multi thread merupakan jalannya beberapa proses dengan urutan yang cepat
(multitasking) dalam satu program. Multithreading ini merupakaan teknik
pada manipulasi data dimana node-node pada struktur pohon data berisi
penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur
menjadi lebih efisien.
Kalau sebelumnya kita telah mempelajari
tentang proses, namun seiring berjalannya waktu dan tuntutan teknologi
ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada
proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer
untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan
multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang
dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek
seperti menjalakan beberapa task secara bersamaan walaupun otaknya hanya
satu.
Keuntungan MultiThreading
Multiprocessing merupakan
penggunaan dua atau lebih CPU dalam sebuah sistem komputer.
Multitasking merupakan metode untuk menjalankan lebih dari satu proses
dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah
cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam
sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara
independen.
Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:
1.
Responsif. Aplikasi interaktif menjadi tetap responsif meskipun
sebagian dari program sedang diblok atau melakukan operasi lain yang
panjang. Umpamanya, sebuah thread dari web browser dapat melayani
permintaan pengguna sementara thread yang lain berusaha menampilkan
gambar.
2. Berbagi sumber daya. Beberapa thread yang melakukan
proses yang sama akan berbagi sumber daya. Keuntungannya adalah
mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda
dalam lokasi memori yang sama.
3. Ekonomis. Pembuatan sebuah
proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya
adalah dengan menggunakan thread, karena thread membagi memori dan
sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat
thread dan context switching thread. Akan susah mengukur perbedaan waktu
antara thread dan switch, tetapi secara umum pembuatan dan pengaturan
proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada
Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan
pembuatan thread sedangkan proses context switch 5 kali lebih lama
dibandingkan context switching thread.
4. Utilisasi arsitektur
multiprosesor. Keuntungan dari multithreading dapat sangat meningkat
pada arsitektur multiprosesor, dimana setiap thread dapat berjalan
secara paralel di atas procesor yang berbeda. Pada arsitektur processor
tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini
berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada
kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan
waktu.
Model MultiThreading
Beberapa terminologi yang akan dibahas:
1.
Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka
thread pada tingkatan pengguna. Karena pustaka yang menyediakan
fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat
dibuat dan dikendalikan.
2. Thread Kernel: Thread yang didukung
langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread
dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem
operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan
thread pengguna.
Model-Model MultiThreading:
1. Model
Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke
sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang
pengguna sehingga efisien. Hanya satu thread pengguna yang dapat
mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat
berjalan secara paralel pada multiprosesor. Contoh: Solaris Green
Threads dan GNU Portable Threads.
2. Model One-to-One. Model ini
memetakan setiap thread tingkatan pengguna ke setiap thread. Ia
menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini
ialah setiap pembuatan thread pengguna memerlukan tambahan thread
kernel. Karena itu, jika mengimplementasikan sistem ini maka akan
menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread
dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
3.
Model Many-to-Many. Model ini memultipleks banyak thread tingkatan
pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan
tingkatan pengguna. Model ini mengizinkan developer membuat thread
sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena
hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat
berjalan secara paralel pada multiprosessor.
Kesimpulan
Thread adalah alur kontrol dari suatu proses.
Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.
Tiga model Multithreading:
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.
Pembatalan Thread: Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya.
Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation.
2. Deffered cancellation.
Thread Pools menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil.
Thread Schedulling ada 2 macam:
1. Local Schedulling.
2. Global Schedulling.
Istilah thread di Linux adalah task.
Pembuatan Thread di Linux menggunakan System call clone().
Mirip
seperti sistem operasi desktop, Symbian OS mampu melakukan operasi
secara multithreading, multitasking dan pengamanan terhadap memori. Dan
semua pemrograman pada Symbian dilakukan secara event-based, artinya
hardware CPU menjadi tidak aktif ketika tidak ada inputan berupa
aktivitas tertentu. Namun perlu dipahami sistem operasi ini memang
ditujukan untuk diinstal pada peralatan mobile dengan keterbatasan
sumber daya. Multithread dan multitasking memberikan kemampuan Symbian
OS untuk menjalankan lebih dari satu aplikasi sekaligus. Namun khusus
ini, adanya preemptive multitasking kernel akan memberi tiap-tiap
program suatu pembagian waktu pemprosesan yang dilakukan bergantian
dengan cepat sehingga nampak bagi pemakai seolah-olah proses ini
dieksekusi secara bersamaan. Untuk itu telah didefinisikan penjadwalan
berdasar prioritas tertentu untuk menentukan proses mana yang berjalan
terlebih dahulu dan proses apa berikutnya serta berapa banyak waktu akan
jadi diberi.
Berikut contoh program menurut versi nya :
Versi C#
using System; using System.Threading; namespace MultiThreet { class Program { static void CetakThread2() { int a = 50; for (int i = 0; i <= a; i++) { Console.WriteLine("Data 2"); Thread.Sleep(100); } } static void Cetakthread3() { int a = 50; for (int i = 0; i <= a; i++) { Console.WriteLine("Data 3"); Thread.Sleep(1000); } } static void Main(string[] args) { Thread thread2 = new Thread(CetakThread2); Thread thread3 = new Thread(Cetakthread3); thread2.Start(); thread3.Start(); int a = 50; for (int i = 0; i <= a; i++) { Console.WriteLine("Data 1"); } Console.ReadKey(true); } } }
Versi Java
package multi; class thrid extends Thread { String nama; public thrid(String a) { nama = a; } public void run() { for(byte i = 0; i<50; i++) { System.out.println(nama); } } } public class Main { public static void main(String[] args) { thrid t = new thrid("Data 2"); thrid t2 = new thrid("Data 3"); t.start(); t2.start(); int a = 50; for (int i = 0; i <= a; i++) { System.out.println("Data 1"); } } }
Link Download : Here !!!
0 komentar:
Posting Komentar