longRunningOperation() ni kuting; chop etish ("davomi asosiy tanasi"); uchun (int i = 10; i < 15; i++) {
uyqu (davomiylik (sekundlar: 1));
chop etish ("indeks dan asosiy: $i");
}
chop etish ("end ning asosiy");
}
Sifatida siz mumkin bor e'tibor bergan, the Oldingi funktsiyalari hech qachon yugur haqiqatan ham asinxron; bu chunki biz kutamiz longRunningOperation() ning bajarilishi usuli kodining qolgan qismini bajarishdan oldin. Ularning asinxron ishlashi uchun biz o'tkazib yuborishimiz kerak
the kuting kalit so'z, kabi quyidagicha:
asosiy() asinx {
chop etish ("boshlash ning uzoq yugurish operatsiya"); longRunningOperation();
chop etish ("davomi asosiy tanasi"); uchun (int i = 10; i < 15; i++) {
uyqu (davomiylik (sekundlar: 1)); chop etish ("indeks dan asosiy: $i");
}
chop etish ("end ning asosiy");
}
Bu bo'ladi qilish the asosiy() usuli oddiygina davom eting uning ijro etish, qayerda biz olish quyidagi chiqish:
boshlash ning uzoq yugurish operatsiya davom etmoqda asosiy tanasi
indeks: 0
indeks dan asosiy: 10 indeks: 1
indeks dan asosiy: 11 indeks: 2
indeks dan asosiy: 12 indeks: 3
indeks dan asosiy: 13 indeks: 4
indeks dan asosiy: 14 oxiri ning asosiy
Dart amalga oshiradi ikkalasi ham asinx usullari ichida the bir xil ip. Ikkalasi ham funktsiyalari yugur bu holda asinxron, lekin bu ularning parallel ravishda bajarilishini anglatmaydi.
Bu ijro hisoblanadi nazorat qilingan tomonidan the Dart Tadbir halqa, qaysi harakat qiladi kabi a menejer Dart Futures va asinxron kod uchun.
Kimga bajarmoq Dart kod ichida parallel (bu bu, da the bir xil vaqt), biz foydalanish Dart Izolyatsiya qiladi.
Dart Izolyatsiya qiladi
Demak, siz ega bo'lishi mumkin bo'lgan hayron, qanday qilib Haqiqatan ham bajara olasizmi? parallel kodlash va ish faoliyatini yaxshilash va sezgirlik? Dart Izolyatsiya qiladi bor Bu yerga uchun bu. Har Dart ilova kamida bitta Izolyatsiyadan iborat misol, asosiy Izolyatsiya qilish misol, bu erda barcha dastur kodi ishlaydi. Shunday qilib, parallel bajarish kodini yaratish uchun biz a yaratishimiz kerak
yangi Izolyatsiya qilish misol bu mumkin yugur ichida parallel bilan asosiy Izolyatsiya :
Izolyatsiyalarni o'ziga xos ip deb hisoblash mumkin, ammo ular o'rtasida hech narsa bo'lmaydi boshqa, kabi the nomi taklif qiladi. Bu anglatadi bu ular qil emas baham ko'ring xotira, shunday biz qil bu yerda qulflar va boshqa ip sinxronlash usullaridan foydalanish shart emas.
Kimga muloqot qilish orasida izolyatsiya qiladi, bu bu, uchun yuborish va qabul qilish ma'lumotlar orasida ular, biz xabar almashish kerak. Dart buni amalga oshirish usulini taqdim etadi.
Keling o'zgartirish the oldingi amalga oshirish uchun foydalanish a Izolyatsiya qilish o'rniga misol :
Import 'dart:io'; Import 'dart:izolyatsiya';
Kelajak longRunningOperation( String xabar ) asinx { uchun (int i = 0; i < 5; i++) {
kuting Future.delayed(Davomiylik(sekundlar: 1)); chop etish ("indeks: $i");
}
}
asosiy() {
chop etish ("boshlash ning uzoq yugurish operatsiya");
Do'stlaringiz bilan baham: |