AppleがSwiftにConcurrencyを導入した理由(AsyncSequence)
(sobabear.com)Appleは、Concurrencyという新しいパラダイムをSwiftに導入した。非同期処理は for-await-in 文を通じて扱う。
従来、SwiftはClosure(Block function)を使って非同期処理を行っていた。そこにCombineというフレームワークも登場した。このCombineフレームワークも、Erik MeijerのRXをApple独自に実装したものだ。
しかし、上記2つの方式には、SwiftのGC方式であるARCの限界がある。capture list という仕組みのためにメモリリークが発生する可能性があり、つまりClosureを使う方式を避けたかったのだ。そこで、Erik Meijerがiterable(Sequence)とIteratorを反転させてReactiveを作ったように、Appleはこれを反転させずに非同期化したAsyncSequence(AsynscIterable)とAsyncIteraotrを作り、メモリリーク問題を解決しようとすると同時に、新しい非同期パラダイムを提示した。
まだコメントはありません。