IDFreelance - Indonesia Freelance Programmer and Web Designer

Add to Technorati Favorites
 
Content

 

Proses Threading dalam Pemrograman

31 December, 2008

threading dalam csharp Proses Threading dalam PemrogramanSuatu thread merupakan suatu alur instruksi yang di eksekusi. Program yang melakukan lebih dari satu alur instruksi biasa disebut melakukan multithreading.

Contoh, kita ingin membuat suatu aplikasi untuk meng-import file yang besar sementara memungkinkan user untuk menekan tombol “Batal”, seorang developer akan membuat thread tambahan untuk melakukan proses import. Dengan melakukan proses import di thread yang lain, aplikasi bisa menerima pesan pembatalan dari user daripada harus menyebabkan aplikasi menjadi “Not Responding” sampai proses upload selesai.

Suatu sistem operasi men-simulasikan beberapa thread melalui mekanisme yang disebut “time slicing”. Time Slicing adalah mekanisme dimana sistem operasi mengalihkan eksekusi dari satu thread (urutan instruksi) ke thread berikutnya sehingga proses eksekusi perintah secara terus menerus akan tetap berlanjut dengan cepat.

Efeknya hampir sama dengan efek dalam kabel fiber optic dari telepon, dimana kawat dari fiber optic mewakili processor dan setiap percakapan yang terjadi mewakili suatu thread. Satu (single-mode) kawat fiber optic telepon hanya bisa mengirimkan 1 sinyal  pada sekali pakai, tetapi banyak orang bisa saling melakukan percakapan secara terus menerus. Channel-channel dalam fiber optic cukup cepat dalam melakukan pergantian antar percakapan. Hampir sama, setiap thread dari suatu proses multithread selalu berjalan terus menerus secara paralel dengan thread yang lain.

Suatu thread seringkali menunggu event-event yang berbeda, seperti operasi I/O, mengganti ke suatu thread yang berbeda menyebabkan lebih efisiennya proses eksekusi perintah, karena processor tidak perlu idle untuk menunggu sampai operasi selesai.

Tetapi, mengganti proses dari satu thread ke thread yang lain akan bisa menyebabkan “overhead”. Jika terlalu banyak thread, pengalihan overhead akan membanjiri bagian dari proses thread yang sedang di eksekusi, juga, sistem akan mulai berjalan lambat – mulai melakukan proses pergantian antar thread daripada menyelesaikan proses dari thread sebelumnya terlebih dahulu.

Yang baru mengenal programming-pun pasti pernah mendengar istilah multithreading sebelumnya, seringkali mengenai kerumitannya.

Pemrograman,  betapapun, meninggalkan suatu kerumitan yang patut dipertimbangkan, tidak sebanyak seperti membuat aplikasi yang memiliki banyak thread.

Atomicity (Valensi)
Pikirkan suatu kode program yang melakukan proses transfer dari suatu rekening. Pertama, pastikan apakah dananya cukup, jika cukup, proses transfer terjadi. Jika sesudah mengecek dana, eksekusi diganti dengan thread untuk menghapus dana tersebut, maka akan menyebabkan proses transfer yang invalid ketika proses eksekusi kembali ke thread awal. Mengatur akses rekening sehingga hanya satu thread yang bisa mengakses rekening tersebut, dalam satu waktu akan memperbaiki masalah dan menjadikan transfer tersebut “atomic”.

Suatu operasi atomic adalah satu, yang mana menyelesaikan seluruh prosesnya sampai selesai, atau mengembalikan sistem ke kondisi awal. Operasi transfer pada bank pastinya merupakan suatu operasi atomic karena melibatkan 2 langkah. Dalam proses melakukan langkah-langkah tersebut, sangat mungkin kehilangan operasi atomicity jika thread yang lain melakukan modifikasi terhadap rekening sebelum proses transfer selesai.

Identifikasi dan implementasi atomicity merupakan salah satu kerumitan utama dalam pemrograman multithreading.

Kerumitannya bertambah karena secara umum statemen dalam C# tidak secara penuh memerlukan atomic. _Count++, sebagai contohnya, merupakan statemen dalam C#, tetapi diterjemahkan menjadi beberapa instruksi untuk processor.

1. Proses membaca data dalam Count.
2. Processor mengkalkulasikan nilai yang baru.
3. Nilai baru diberikan pada Count (walaupun ini mungkin bukan atomic).

Sesudah data diakses, tetapi sebelum nilai baru diberikan, thread yang lain mungkin akan memodifikasi nilai aslinya.

Deadlock
Untuk menghindari kondisi yang tidak diinginkan, bahasa pemrograman mendukung kemampuan untuk mengunci dan membatasi kode untuk dijalankan pada thread tertentu, umumnya satu. Tetapi, jika perintah penguncian dijalankan pada thread berbeda, suatu deadlock bisa terjadi, seperti thread menjadi berhenti, masing-masing menunggu yang lain untuk melepaskan penguncian.

gbr Proses Threading dalam Pemrograman

Contohnya :
Pada poin ini, setiap thread menunggu thread lain sebelum memulai proses, jadi setiap thread dikunci, sehingga mengakibatkan deadlock secara keseluruhan dalam proses eksekusi kode yang dijalankan.

Masalah dari code yang tidak atomic atau menyebabkan deadlock adalah bahwa kode tersebut tergantung pada  urutan terjadinya instruksi dalam processor pada beberapa thread.

Sekilas pemrograman multithreading memang agak susah dan rumit, semua tergantung bagaimana logika programmer dalam mengatasinya. Salam.

Share and Enjoy:

  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman
  • services sprite Proses Threading dalam Pemrograman

Artikel Terkait :

Tags: , , ,   Dalam CSharp, Pemrograman | 6 Comments »

You can leave a response, or trackback from your own site.


proses threading  proses thread  aplikasi yang threading  contoh proses thread  contoh thread pada aplikasi  proses thread pada aplikasi  contoh program c sharp  pengertian thread vb net  thread dalam sistem operasi  pemrograman atomic  contoh aplikasi threading chatting dg vb net  proses terjadinya thread  makalah proses dan thread  proses dan thread dalam pemrograman  e-book thread dalam sistem operasi  thread pada sistem operasi  istilah thread pada pemrograman web  proses single and multi thread  multithread adalah  proses single and multithread  vbnet belajar threading  artikel tentang proses and thread  pengertian multithread pada pemrograman net  mengenal c# thread  proses terjadinya thread pembatalan  menggunakan multithreading vb net  mengetahui proses threading selesai dengan vb net  mengenal thread dalam c#  mengenal c# threading  makalah threads dalam sistem operasi  masalah pada proses dan thread  membuat thread dalam proses  mekanisme terjadinya thread  membuat aplikasi di vb 2008 membuka program multi thread  membuat thread dalam C#  menunggu perintah selesai vb net  contoh membuat script multithread  artikel proses dan thread sistem operasi  artikel thread pada sistem operasi  artikel treading sistem operasi  atomicity adalah  buat multi thread di visual basic 6  c# multi thread tutorial  c# multithreading adalah  contoh program deadlock vb net  contoh program threading vb net  contoh threading vb net adalah  definisi post pada pc dengan prosesnya  efek kawat pada processor  fungsi threadinf dalam vb net  
 

 

6 Respon untuk “Proses Threading dalam Pemrograman”

  1. Alex Irani says:

    wah…… mantaph negh blog nya.. dr awal Q udh jatuh cinta dg blog ini, keren sangat. sob, ada ebook C# bahasa indonesia gak ? kalau ada minta yach. butuh banget buku C# yg bhs.Indonesia..

    kunjungan hangat.. kl sempet kunjung balik yach sob :)

  2. teknologi says:

    teknologi…

    [...]Proses Threading dalam Pemrograman | IDFreelance.net – Ajang Belajar Pemrograman dan Desain Web[...]…

  3. af says:

    msh belum bgt ngerti. klo contohny gmn y….

    mks. nice blog

  4. gus says:

    terlepas dr pemrograman yg bahasanya awam bagi saya. Templatenya kerren bangat Kang……jempol duo deh….

  5. Tony says:

    rumit banget ya

Tinggalkan balasan




six − 6 =