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 thread  proses threading  contoh proses thread  contoh thread pada aplikasi  proses thread pada aplikasi  contoh program c sharp  pemrograman atomic  makalah proses dan thread  contoh aplikasi threading chatting dg vb net  proses terjadinya thread  thread dalam sistem operasi  proses terjadinya thread pembatalan  thread pada sistem operasi  proses single and multithread  proses single and multi thread  mengenal c# thread  multithread adalah  proses dan thread dalam pemrograman  pengertian multithread pada pemrograman net  artikel tentang proses and thread  istilah thread pada pemrograman web  proses dan thread dalam sistem operasi  urutan dalam proses import  proses dan thread  perintah proses dan thread  pergantian proses sistem operasi  urutan proses import  penggantian proses sistem operasi  vb net threading  pengertian threading net  pengertian threading di visual basic net  pengertian thread vb net  pengertian thread fiber multi threading  single-threaded proses  proses dan threads  proses external threading  proses thread dalam sistem operasi  proses thread adalah  thread dalam pemrograman  thread dalam pemrograman net  proses terjadinya thread multithread  thread operasi adalah  thread pada proses berat sistem operasi  proses terjadinya desain  thread pada proses operasi  tutorial multi thread c#  proses percakapan  PROSES multithreading  proses menunggu proses pertama selesai di vb net  pengertian proses thread  
 

 

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




× seven = 56