C#の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/30 15:31 UTC 版)
「Async/await」の記事における「C#の場合」の解説
2011年にリリースされたAsync CTPでプロトタイプ版が実装され、2012年のC# 5.0で正式にサポートされた。 C# 7より前のバージョンでは、非同期メソッドはvoid、Task、またはTask<T>を返すことが要求される。これはC# 7で拡張され、ValueTask<T>などの他の特定の型が含まれるようになった。voidを返す非同期メソッドは、イベントハンドラーを対象としている。同期メソッドがvoidを返すような大抵のケースでは、より直感的な例外処理を可能にするため、代わりにTaskを返すことが推奨される。 awaitを使用するメソッドは、asyncキーワードを付けて宣言する必要がある。Task<T>型の戻り値を持つメソッドでは、async宣言されたメソッドには、Task<T>ではなくTに割り当て可能な型のreturn文が必要である。コンパイラは値をTask<T>ジェネリックでラップする。asyncなしで宣言されたTaskまたはTask<T>戻り値の型を持つメソッドをawaitすることもできる。 次の非同期メソッドは、awaitを使用してURLからデータをダウンロードする。 public async Task
※この「C#の場合」の解説は、「Async/await」の解説の一部です。
「C#の場合」を含む「Async/await」の記事については、「Async/await」の概要を参照ください。
C++の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/02 03:50 UTC 版)
名前修飾を行う処理系のうち、C++コンパイラは最も広く用いられているが、最も標準化が進んでいないものである。最初のC++コンパイラはCソースコードへのトランスレータとして実装された。そのため、シンボルの名前はCの識別子の規則に従う必要があった。後にC++コンパイラ自身が機械語コードやアセンブラコードを出力するようになっても、計算機システムのリンカは総じてC++のシンボルをサポートせず、名前修飾が必要な状態が続いた。 C++言語は、標準的な修飾規則を定めていない。そこで、コンパイラによって修飾規則が異なる。C++の修飾がかなり複雑になりうること(クラス、デフォルトの引数、変数のオーナー、演算子オーヴァーロードなどの情報を格納する)も加わり、異なるコンパイラのオブジェクトコードはリンクすることができないのが通常である。
※この「C++の場合」の解説は、「名前修飾」の解説の一部です。
「C++の場合」を含む「名前修飾」の記事については、「名前修飾」の概要を参照ください。
C++の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/30 15:31 UTC 版)
「Async/await」の記事における「C++の場合」の解説
C++では、awaitが正式にC++20ドラフトにマージされたため、正式なC++20の一部として正式に受理される予定である。ただし、実際のC++キーワードはawaitではなくco_awaitという名前になった。また、MSVCコンパイラとClangコンパイラは、少なくとも何らかの形式のco_awaitをすでにサポートしている(GCCはまだサポートしていない)。 #include
※この「C++の場合」の解説は、「Async/await」の解説の一部です。
「C++の場合」を含む「Async/await」の記事については、「Async/await」の概要を参照ください。
Cの場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/30 15:31 UTC 版)
「Async/await」の記事における「Cの場合」の解説
C言語でのawait/asyncの正式なサポートはまだ存在しない。s_taskなどの一部のコルーチンライブラリは、マクロでawait/asyncキーワードをシミュレートする。 #include
※この「Cの場合」の解説は、「Async/await」の解説の一部です。
「Cの場合」を含む「Async/await」の記事については、「Async/await」の概要を参照ください。
- C#の場合のページへのリンク