Ну что за бред, ребята? У вас в итоге во втором примере нету параллельного выполнения. Овощи чистятся последовательно. А в первом примере сделали самую примитивную ошибку с потоко небезопасным обращением к памяти. Зачем пытаться рассказывать другим то, что сами не понимаете. А если понимаете, то зачем снимать такой бред? Почему качество контента так падает?
@Keira שער האבדון а можешь указать где бы async не был сахаром над более низкой реализацией асинхронности?)) хотя бы один язык) никто не станет с нуля писать систему многопоточности, когда все и так работает и достаточно просто создать юзерфрендли обертку.
А почему в первом примере (с OperationQueue) не все овощи чистятся ?
Второй пример не корректен так как код выполняется последовательно, а не асинхронно.
Буду признателен, если будет выпущено еще одно видео на тему async/await с более простыми примерами. Спасибо
Ну что за бред, ребята? У вас в итоге во втором примере нету параллельного выполнения. Овощи чистятся последовательно. А в первом примере сделали самую примитивную ошибку с потоко небезопасным обращением к памяти. Зачем пытаться рассказывать другим то, что сами не понимаете. А если понимаете, то зачем снимать такой бред? Почему качество контента так падает?
Как исправить первый пример, чтобы он работал нормально? Не пойму никак.
@@VitaliyTver блокировать вызов choppedVeggies.append(choppedVeggie) с помощью NSLock. Чтобы не было одновременной записи с разных потоков.
@@VitaliyTver Я бы селал так:
enum Vegetable: String{
case tomato;
case potato;
}
class ChoppingOperation: Operation{
let vegetable: Vegetable;
let duration: UInt32;
init(vegetable: Vegetable) {
self.vegetable = vegetable;
self.duration = (1...14).randomElement() ?? 1;
super.init();
}
override func main(){
print("Начинаем резать \(self.vegetable.rawValue). Продолжительность \(self.duration) сек.");
for _ in 0..= 10{
item.cancel();
}
}
workQueue.waitUntilAllOperationsAreFinished();
+, пример зашквар
@@VitaliyTver через мьютекс добавлять в массив элементы. Например, через NSLock.
Так же можно было использовать старый добрый Dispatch Group
Думаю, самое оно под сетевые запросы и под запросы к хранилищам данных
Спасибо ! Все понятно и ясно, приятно слушать ))
все неплохо, но звук заводской столовой на фоне - минус
Я думал 8 минут что то постельное делается а там утечка памяти) советую после 8 минуты смотреть
А почему мы последние строчки кода в async запускаем?
@Keira Errinwright сказала как отрезала ) с безапелляционостью невежды
@Keira שער האבדון а можешь указать где бы async не был сахаром над более низкой реализацией асинхронности?)) хотя бы один язык) никто не станет с нуля писать систему многопоточности, когда все и так работает и достаточно просто создать юзерфрендли обертку.
Было бы круто, если бы Apple придумали такое же на основе декларативной парадигмы, по типу Function Builder.
Одна такая конструкция уже есть - AsynchImage()
claro como el agua, y eso que no hablo ruso
На 8.43 возмужал 😅