Go言語での実用例に見る!AsyncChannelとスレッド間通信チャネル概説 by たふみ

iOSDC Japan 2022
レギュラートーク(20分)

Go言語での実用例に見る!AsyncChannelとスレッド間通信チャネル概説

CreatorQsF たふみ CreatorQsF
3

高度な並行アルゴリズムを提供するSwift Async AlgorithmsにAsyncChannelというものがあります。チャネルとはスレッド間でメモリを共有する手法の1つで、特にGo言語での採用により近年一般的になっています。
本発表ではGo言語での使用例を用いてチャネルの概説を、そしてAsyncChannelとの差異に思いを馳せチャネルについて簡単な認識を持つことが目的です。
スレッド間のメモリ共有は、共有メモリを使い危険領域を排他制御等で保護する手法が一般的ですが、チャネルを使うと同期が入出力としてより素直に表現できます。Go言語にはDo not communicate by sharing memory; instead, share memory by communicatingという格言がありますが、 他方、チャネルとバグの研究を取り上げ現実についても触れたいと考えています。