-- Views
December 23, 25
スライド概要
F#のAsyncとTaskの違いについて話したLT
AsyncとTask
伸びしろコード ● EdinetCodeに基づいて、企業情報を取得 ○ EdinetCode:EDINETにおける法人や個人に付番される一意のコード
F#の非同期プログラミング
違い 項目 .NET Task F# Async 評価 即時評価 遅延評価 互換性 .NET 全体 F# 型 Task<’T>またはTask Async<’T> ● ● Taskは、タスクが作成された瞬間に 即時評価 され、スレッドプールに登録される Asyncは、実行関数 (StartAsTask,RunSynchronously等) が呼び出されるまで 遅延評価 される
.NET / C# .NET Framework 1.0 2002年 ThreadPool の導入 .NET Framework 4.0 2010年 Task Parallel Library (TPL) の導入 Task 型が初登場。非同期処理が簡素化される。 C# 5.0 .NET Framework 4.5 2012年 async/await 構文の追加 非同期メソッドの可読性向上、エラーハンドリング改善。 .NET Core 2.1 2018年 ValueTask 型の導入 オーバーヘッド削減、短時間の非同期処理が効率化。 .NET Core 3.0 2019年 IAsyncEnumerable の導入 await foreach で非同期ストリーミングが可能に。 .NET 5 / .NET 6 2020/21年 非同期処理の最適化 Task のパフォーマンス改善。
F#
F# 1.0
2005年
非同期計算式 (async { }) の導入
# 独自の Async<'T> 型が登場。関数型スタイルの非同期処理が可能に。
F# 2.0
2010年
非同期メソッドの追加
Async.Start,Async.RunSynchronouslyで同期・非同期の実行が簡単に。
F# 3.0
2012年
Task との統合
Async.AwaitTask, Async.StartAsTaskが導入。
C# の async/await と相互運用が強化。
F# 4.5
2018年
ValueTask サポート
ValueTask 型の導入でオーバーヘッド削減。
F# 8/9
2023年
非同期ストリーミング強化
IAsyncEnumerable<'T> のサポート向上、 task 計算式の最適化。