آموزش کنترل همزمانی در توسعه iOS با Swift 2
آموزش کنترل همزمانی در توسعه iOS با Swift 2
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش کنترل همزمانی در توسعه iOS با Swift 2 خواهیم پرداخت.
همزمانی راهی برای اجرای همزمان بیش از یک چیز است. در یک برنامه، همزمانی به چندین وظیفه که همزمان اجرا می شوند اشاره دارد.
همزمانی می تواند برنامه شما را سریعتر، تمیزتر کرده و تجربه بهتری را به کاربر ارائه دهد. استفاده از چند رشته برای بسیاری از توسعه دهندگان دشوار به نظر می رسد ، اما API مانند NSOperation و Dispatch Queues استفاده از همزمانی و چند رشته را در برنامه آسان می کند.
GCD
GCD متداول ترین API برای مدیریت کد همزمان و اجرای عملیات غیرهمزمان در سطح سیستم است. GCD صف وظیفه را تهیه و استفاده می کند. این صف ها ساختار داده ای هستند که از اصطلاحات FIFO استفاده می کنند ، به عنوان مثال وظیفه در وهله اول در یک صف ابتدا اجرا می شود و کار در آخرین صف در آخر اجرا می شود.
به عنوان مثال – فرض کنید یک خط رزرو بلیط فیلم ، اگر شما آخرین نفر باشید ، آخرین بلیط را دریافت می کنید و اگر کسی به دنبال شما بیاید ، پس از شما بلیط دریافت می کند.
صف اعزام
صف اعزام (Dispatch Queue) روشی آسان برای انجام وظیفه همزمانی در برنامه شماست. دو نوع صف وجود دارد –
صف های سریالی – آنها وظایف را به صورت سری ذخیره می کنند و همزمان یک کار را انجام می دهند.
صف های همزمانی – آنها وظایف را به صورت سری ذخیره می کنند و همزمان یک کار را انجام می دهند.
برخی از توابعی که برای ایجاد یا گرفتن صف استفاده می شوند عبارتند از:
1 2 3 4 5 6 7 8 |
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 |
افزودن وظایف به صف
دو نوع تابع وجود دارد که به افزودن وظایف به صف کمک می کند. آنها هستند –
توابع همزمان –
- dispatch_once – فقط وقتی کار در طول برنامه انجام شود ، کار را ارسال می کند.
- dispatch_sync – کاری را به صف ارسال می کند و فقط پس از اتمام کار برمی گردد.
توابع ناهمزمان –
- Dispatch_async – کاری ارسال می کند و برمی گرداند.
- Dispatch_after – بلافاصله برمی گردد اما برای یک زمان خاص به تأخیر می افتد.
- Dispatch_async – بلافاصله برمی گردد اما کار چندین بار ارسال می شود.
مثال
در زیر کد مثال برای افزودن وظایف به صف وجود دارد.
1 2 3 4 5 6 7 8 |
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 |
مثال کلی استفاده از صف
کد زیر نمونه ای از استفاده از صف است.
1 2 3 4 5 6 |
dispatch_async(background_queue, ^ { // Perform code that takes long time, here. Dispatch_async(dispatch_get_main_queue(), ^ { //Some other task, generally UI. }); }); |
این تمام کاری است که ما با کنترل همزمانی انجام خواهیم داد ، زیرا تا زمانی که شما به یک توسعه دهنده میانی iOS تبدیل نشوید ، اطلاعات کافی است.
مفاهیمی که آموخته اید را ادامه دهید و سعی کنید متناسب با نیاز خود آنها را اصلاح و یکپارچه کنید.
لیست جلسات قبل آموزش توسعه iOS با Swift 2
- آموزش توسعه iOS با Swift 2
- آموزش Xcode IDE در توسعه iOS با Swift 2
- اولین برنامه در توسعه iOS با Swift 2
- آموزش ساخت برنامه تعاملی در توسعه iOS با Swift 2
- آموزش ساخت برنامه ها با Swift
- آموزش iOS پیشرفته در توسعه iOS با Swift 2
- آموزش یکپارچه سازی نقشه ها در توسعه iOS با Swift 2
- آموزش طرح بندی خودکار در توسعه iOS با Swift 2
- آموزش انیمیشن ها در توسعه iOS با Swift 2
- آموزش دسترسی به خدمات وب در توسعه iOS با Swift 2
دیدگاه شما