回答編集履歴
3
update
test
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
他回答でも言及がありますが、Microsoft社の
|
59
|
+
他回答でも言及がありますが、Microsoft社のC#言語で広く普及した構文(時系列的には[F#言語が発祥](https://en.wikipedia.org/wiki/Async/await)らしい)と思います。ネットワーク処理に限らず、ファイルI/OやGUIといったイベント駆動処理での利用が想定にあったと思われます。
|
60
60
|
|
61
61
|
|
62
62
|
|
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
2019年現在の純粋なC++言語仕様(C++17)としては、async/awaitサポートは(まだ)ありません。
|
68
68
|
|
69
|
-
将来的に導入が検討されている [C++20コルーチン機能](https://yohhoy.hatenablog.jp/entry/2019/09/06/174712) では、
|
69
|
+
将来的に導入が検討されている [C++20コルーチン機能](https://yohhoy.hatenablog.jp/entry/2019/09/06/174712) では、キーワード名が異なるもののasync/await構文が提供されます。
|
70
70
|
|
71
71
|
|
72
72
|
|
2
update
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
async/await構文は必ずしもマルチスレッドと1:1対応させる概念ではありません。スレッドやコルーチン、ファイバー、イベントループといった非同期処理のための仕組みの存在を前提とし、それらの上で実際の非同期処理を記述するときに用いる構文要素です。効率性や実現性を無視すれば、全てのasync/await構文はそれを使わないプログラムに書き換え可能です。(フレームワークやプログラミング言語の表現限界はあるので、あくまで原理的な話としてですが)
|
17
|
+
async/await構文は必ずしもマルチスレッドと1:1対応させる概念ではありません。スレッドやコルーチン、ファイバー、イベントループといった **非同期処理のための仕組みの存在を前提とし**、それらの上で実際の非同期処理を記述するときに用いる構文要素です。効率性や実現性を無視すれば、全てのasync/await構文はそれを使わないプログラムに書き換え可能です。(フレームワークやプログラミング言語の表現限界はあるので、あくまで原理的な話としてですが)
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -25,6 +25,10 @@
|
|
25
25
|
|
26
26
|
|
27
27
|
async/awaitそれ自身は新しいプログラミング・パラダイムとまでは行かずとも、新しいプログラミング技法ではあると思います。多くのプログラミング言語で受け入れられているのも事実ですから、理解しておくに越したことはないと思います。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
非同期処理を実現する何らかのバックエンド機構に対して、async/await構文はプログラマ向けに提供されるフロントエンド構文という解釈になります。マルチスレッド処理は、このバックエンド機構の選択肢の一つです。
|
28
32
|
|
29
33
|
|
30
34
|
|
1
update
test
CHANGED
@@ -48,7 +48,15 @@
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
+
> async/awaitはネットワーク系プログラミングの世界だけで必要なものだと勝手に思っていた
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
他回答でも言及がありますが、Microsoft社の C#言語 で導入された構文(実際には F#言語 が発祥らしい)です。ネットワーク処理に限らず、GUIやファイルI/Oなどのイベントドリブン処理での利用が想定にあったと思われます。
|
56
|
+
|
57
|
+
|
58
|
+
|
51
|
-
>
|
59
|
+
> C++11以降はasync/awaitが存在することを最近知りました
|
52
60
|
|
53
61
|
|
54
62
|
|