Panggilan prosedur asinkron (pemrograman komputer)

Panggilan prosedur **asinkron** (APC) adalah unit kerja dalam komputer.

## Definisi
Panggilan prosedur dapat dibedakan menjadi dua jenis, yaitu sinkron dan asinkron.

# Panggilan Prosedur Sinkron: Dalam jenis panggilan ini, eksekusi dilakukan dalam satu utas (thread) dan setiap panggilan menunggu panggilan sebelumnya selesai sebelum melanjutkan ke panggilan berikutnya. Artinya, proses akan berhenti pada titik tersebut hingga hasil dari panggilan sebelumnya diperoleh. Panggilan sinkron ini sederhana, tetapi bisa menghambat efisiensi jika banyak operasi yang harus menunggu satu sama lain, terutama ketika ada operasi yang membutuhkan waktu lama.
# Panggilan Prosedur Asinkron: Berbeda dengan panggilan sinkron, panggilan prosedur asinkron dapat dilakukan tanpa menunggu penyelesaian panggilan sebelumnya. Artinya, program dapat melanjutkan eksekusi operasi lain sementara menunggu hasil dari panggilan sebelumnya. Ini memungkinkan aplikasi untuk tetap responsif dan mengurangi pemborosan sumber daya, terutama dalam situasi di mana beberapa data atau input belum siap.

Contoh penerapan panggilan asinkron adalah dalam kasus di mana sebuah program menunggu balasan dari pengguna (misalnya, pengguna harus mengisi form). Dalam situasi ini, jika panggilan prosedur dilakukan secara sinkron, maka utas yang menunggu balasan pengguna akan terblokir dan menghentikan aktivitas lain yang mungkin berjalan di dalam program. Hal ini dapat menyebabkan pemborosan sumber daya, seperti memori atau penggunaan CPU, yang dapat mengganggu kinerja aplikasi. Sebaliknya, dengan menggunakan panggilan prosedur asinkron, program bisa terus melanjutkan tugas lainnya sembari menunggu balasan pengguna, sehingga lebih efisien.

## Struktur
Panggilan Prosedur Sinkron biasanya diimplementasikan sebagai objek yang memerlukan sedikit memori dan diteruskan ke layanan yang menangani interval tunggu. Objek APC ini akan aktif kembali saat peristiwa yang sesuai terjadi, seperti masukan dari pengguna.

Siklus hidup APC terdiri dari dua tahap utama:

# Tahap Pasif: Pada tahap ini, APC berada dalam kondisi menunggu pasif, menunggu data atau peristiwa yang dibutuhkan, seperti masukan dari pengguna, untuk diproses. Selama tahap ini, APC tidak melakukan apa-apa selain menunggu.
# Tahap Aktif: Setelah data atau peristiwa yang diperlukan diterima, APC akan masuk ke tahap aktif. Pada tahap ini, data tersebut dihitung dan diproses dengan cara yang sama seperti pada panggilan prosedur biasa. Hal ini memungkinkan eksekusi lebih efisien tanpa menunggu secara terus-menerus dalam satu utas.

Dalam konteks prosedur asinkron, aktor adalah prosedur yang dapat digunakan kembali.

Dalam model Aktor, dua port digunakan:

* Satu port untuk menerima input dari dunia luar.
* Port lainnya, yang sering tersembunyi, digunakan untuk menangani atau memproses input tersebut.

Model Pemrograman Dataflow memiliki pendekatan serupa namun lebih kompleks, di mana banyak port digunakan untuk meneruskan data ke layanan eksekusi hanya ketika semua input yang diperlukan tersedia. Dengan cara ini, pemrograman dataflow memungkinkan alur data untuk diproses secara paralel dan efisien, memastikan bahwa semua input tersedia sebelum eksekusi dilakukan, mirip dengan konsep aliran data dalam aplikasi asinkron.

## Implementasi
Di Windows, APC (Asynchronous Procedure Call) adalah sebuah fungsi yang dijalankan secara asinkron dalam konteks thread tertentu. Dengan kata lain, APC memungkinkan suatu fungsi untuk dieksekusi dalam thread yang sedang berjalan tanpa menghentikan eksekusi thread tersebut. Hal ini memungkinkan aplikasi untuk tetap responsif, meskipun sedang menunggu hasil dari operasi yang lebih panjang, seperti I/O atau input dari pengguna.

Terdapat dua mode utama dalam pengoperasian APC di Windows:

# APC Mode Kernel: APC ini dihasilkan oleh sistem operasi (kernel mode). Dalam mode ini, APC dapat dijalankan dalam thread yang terhubung dengan berbagai peristiwa yang terjadi di tingkat sistem operasi, seperti pengelolaan interrupt atau event dari perangkat keras. APC mode kernel sering digunakan untuk menangani tugas-tugas sistem yang memerlukan eksekusi dalam konteks thread kernel.
# APC Mode Pengguna: APC ini dihasilkan oleh aplikasi pengguna (user mode). Aplikasi dapat memicu APC untuk melakukan tugas tertentu secara asinkron, misalnya untuk menangani masukan pengguna atau melakukan operasi latar belakang tanpa memblokir eksekusi thread utama. APC mode pengguna memberikan kontrol lebih besar kepada pengembang aplikasi dalam mengelola bagaimana tugas asinkron ditangani di dalam aplikasi.

Kedua mode ini memungkinkan program untuk meningkatkan efisiensi dengan mengeksekusi kode asinkron dalam thread yang sama, tanpa harus membuat thread terpisah atau menunggu secara aktif, yang bisa membebani sistem.

## Lihat juga

* Sinyal

## Referensi