Thread, atau bisa juga disebut lightweight process, adalah unit dasar dari utilitas CPU yang di dalamnya terdapat ID thread, program counter, register, dan stack dan saling berbagi dengan thread lain dalam proses yang sama. Perbedaan nya apa sama process ? Thread dari suatu process yang sama akan berjalan di memory space yang sama (berbagi memory space), sedangkan process berjalan di memory space yang terpisah.
Nah yang mau saya bahas kali ini bukan tentang thread dan sejarahnya, tapi tentang Multithreading. Sesuai namanya, multithreading adalah kumpulan instruksi yang dijalankan secara bersamaan dalam sebuah program. Nah yang terpenting dari yang terpenting sekarang adalah..... CONTOH KODINGANNYAAAAA. ya seperti biasa saya kasi dulu nih kodingan fullnya baru kita kupas satu per satu.
Noh ngerti ? Ngerti. Ngerti! kalo udah ya close ae blog nya. nah bagi yang blom kita bahas 1 1 kodingannya. Keliatan rumit mungkin tapi lumayan simpel kok (kalo kalian sepintar saya). #BOOM #BURN

Yah untuk bagian atas nya ga perlu di kasi tau kali ya ? pasti uda tau semua kan ? itu library library yang perlu di buka agar command command nya bisa di baca komputer.
Sekarang kita mulai dari fungsi utama.
Untuk pengenalan variable kayaknya ga perlu diajarin lagi ya ? langsung masuk ke perulangan while. Kenapa "i < 2" ? karena kebetulan di contoh yang saya buat ini saya cuma mau buat 2 thread berjalan bersama. kalo pengen lebih ya tinggal naikin aja angkanya.
err=pthread_create(&(tid[i]), NULL, &THREADS, NULL);Variable "err" ini nyatet hasil dari pengerjaan fungsi phread_create, kalo berhasil fungsi bakal me-return angka 0 (nol). Kalo dia ga nge-return 0 bakal ngeprint "can't create thread bla bla bla". strerror itu buat nyatet dia error nya apa.
Itu yang di dalam pthread_create apaan ? itu parameter parameternya. &tid[i] itu buat nunjukin lokasi dimana ID dari thread yang barusan dibuat akan di simpan. parameter kedua itu diisi attribute dari thread yang sedang dibuat, NULL disitu maksudnya thread dibuat dengan attribute default nya. &THREADS itu nunjukin fungsi yang berisi thread, artinya codingan thread yang mau dijalanin itu di tulis di fungsi sini. Parameter terakhir itu argument untuk mentrigger jalannya thread, dan kenapa NULL ? karena thread nya langsung di jalanin tanpa perlu ada kondisi khusus atau pengiriman argument.
Lanjut ke bagian ke fungsi threadnya nih

Baris paling atas itu variable untuk menyimpan ID dari thread yang dibuat, kenapa 2 ? seperti yang saya bilang di atas tadi, Karena di contoh ini saya cuma mau buat 2 threading.
Di dalam fungsi THREADS dikenalin lagi 1 variable baru namanya id yang gunanya untuk nyatet ID dari thread yang memanggil fungsi. Jika id nya sama denga tid yang pertama (tid[0]) maka dia akan jalanin Thread 1 dan kalo sama dengan tid yang kedua (tdi[1]) dia akan jalanin Thread 2. Thread 1 dan Thread 2 itu di isi kodingan dari program yang ingin kalian jalanin secara bersamaan.
Selesai ? Blom. Balik lagi ke fungsi utama 2 baris pthread_join.
Apa gunanya ? gunanya adalah agar pthread_join yang memiliki thread id yang disebutkan menunggu sampai thread tersebut selesai sebelum mereturn nilai. kenapa kedua id dimasukkan ke fungsi pthread_join ? kedua thread tersebut di masukkan ke dalam fungsi pthread_join agar masing masing thread melakukan tugasnya sampai akhir sebelum mereturn nilai. Jika hanya salah 1 saja yang di masukkan ke fungsi pthread_join maka thread yang satu lagi akan ikut berhenti walaupun belum selesai melakukan tugasnya.pthread_join(tid[0],NULL);pthread_join(tid[1],NULL);
Nah gimana ? gimana ? udah mulai mengerti ? kalo belum silahkan coba coba sendiri dan lanjutkan mencari di blog lain (misalnya di blog ini).

