Kontrol Konkurensi
Concurrency adalah cara untuk mengeksekusi lebih dari satu hal pada saat yang bersamaan. Dalam aplikasi, Concurrency mengacu pada beberapa tugas yang berjalan pada waktu yang sama / bersamaan.
Konkurensi dapat membuat aplikasi Anda lebih cepat, lebih bersih, dan memberikan pengalaman yang lebih baik kepada pengguna. Penggunaan multithreading tampaknya sulit bagi banyak pengembang, tetapi API seperti ituNSOperation dan Dispatch Queues memudahkan penggunaan konkurensi dan multi-threading dalam aplikasi.
Grand Central Dispatch
GCD adalah API yang paling umum digunakan untuk mengelola kode serentak dan menjalankan operasi secara asinkron di tingkat sistem. GCD menyediakan dan menggunakan antrean tugas. Antrian ini adalah struktur data yang menggunakan terminologi FIFO, yaitu tugas di tempat pertama dalam antrian akan dijalankan pertama kali dan tugas terakhir dalam antrian akan dijalankan pada akhirnya.
Misalnya - Misalkan baris pemesanan tiket film, jika Anda adalah orang terakhir, Anda akan mendapatkan tiket terakhir, dan jika seseorang datang setelah Anda, dia akan mendapatkan tiket setelah Anda.
Antrian Pengiriman
Antrean pengiriman adalah cara mudah untuk melakukan tugas secara tidak bersamaan dan bersamaan dalam aplikasi Anda. Ada dua jenis antrian -
Serial Queues - Mereka menyimpan tugas secara seri dan menjalankan satu tugas dalam satu waktu.
Concurrent Queues - Mereka menyimpan tugas secara seri dan menjalankan satu tugas dalam satu waktu.
Beberapa fungsi yang digunakan untuk membuat atau mendapatkan antrian adalah -
dispatch_queue_create
// create a serial or concurrent queue
dispatch_queue_get_label
// get the label of a given queue
dispatch_get_main_queue
// get the one and only main queue
dispatch_get_global_queue
// get one of the global concurrent queues
Menambahkan Tugas ke Antrean
Ada dua jenis fungsi, yang membantu menambahkan tugas ke antrian. Mereka adalah -
Synchronous Functions -
dispatch_once - akan mengirimkan tugas hanya setelah selesai masa aplikasi.
dispatch_sync - akan mengirimkan tugas ke antrian dan kembali hanya setelah tugas selesai.
Asynchronous Functions -
Dispatch_async - akan menyerahkan tugas dan kembali.
Dispatch_after - segera kembali tetapi tertunda untuk waktu tertentu.
Dispatch_async - segera kembali tetapi tugas dikirim beberapa kali.
Kode Contoh
Berikut adalah contoh kode untuk menambahkan tugas ke antrian.
dispatch_async(dispatch_get_main_queue(), update_block);
// add update_block to main queue
dispatch_apply(i, some_queue, work_block)
// add work_block to some_queue i times
dispatch_sync(background_queue, blocking_block)
// add blocking block to background queue and wait for completion
Contoh Umum menggunakan Antrian
Kode berikut adalah contoh penggunaan antrian.
dispatch_async(background_queue, ^ {
// Perform code that takes long time, here.
Dispatch_async(dispatch_get_main_queue(), ^ {
//Some other task, generally UI.
});
});
Ini semua akan kami lakukan dengan kontrol konkurensi, karena ini adalah informasi yang cukup sampai Anda menjadi Pengembang iOS perantara.
Teruslah berlatih konsep-konsep yang telah Anda pelajari dan cobalah untuk memodifikasi dan mengintegrasikannya sesuai dengan kebutuhan Anda.