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.