Kamis, 28 April 2011

Thread Cancellation dan Thread Pools

Thread cancellation

Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :
          1.    Asynchronous cancellation : 
              suatu thread seketika itu juga memberhentikan target thread.
          2.    Defered cancellation :
 target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.
                       
       Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakanasynchronous cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.
    Alternatifnya adalah dengan menggunakanDeffered cancellation . Cara kerja dari deffered cancellationadalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagaicancellation points .
      Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakandeferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation .


Thread Pools

Thread Pools adalah suatu solusi pada multithreading yang dimana terdapat keuntungan apabila menggunakannya :
  1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
  2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .
Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent .

Tidak ada komentar:

Posting Komentar