Rabu, 27 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 digunakan asynchronous 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 menggunakan Deffered cancellation . Cara kerja dari deffered cancellation adalah 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 sebagai cancellation points .
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation .


0 komentar:

Posting Komentar