[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part138 http://mevius.5ch.net/test/read.cgi/tech/1528194762/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
198: デフォルトの名無しさん (ワントンキン MMe1-qG2Q) [sage] 2018/06/18(月) 07:05:52.53 ID:5zfP7m4zM >>196 最適化してCompletedTaskでも返すのかなとも思ったけど IL見ると他と同じようにコード生成して実行してんね このオーバーヘッドが必要な処理なら警告を無視してasync使えばいいと思う http://mevius.5ch.net/test/read.cgi/tech/1528194762/198
203: デフォルトの名無しさん (ワッチョイ c251-G00F) [sage] 2018/06/18(月) 18:38:53.61 ID:rGsHjxJX0 皆さんレスどうもありがとうございます。 >>186 スレッド生成はともかく、無駄をなくすという観点は重要ですね。 >>198 に書いていただいてあることも踏まえると、 > しかし文法上の間違いではないのでエラーと断言することもできない > 間をとって警告を出すってのが妥当な落とし所じゃないかな というご意見は実に的を射たものであるように感じました。 >>190 > forループで制御したらいい 同じメソッドを繰り返し呼ぶ例は不適切でしたね。失礼いたしました。 ただ、for ループ版に n = 0 を渡しても何の問題もないのに async Task SayHello0() { } では警告が出るというのも やはり腑に落ちない感じがします。 >> 191 > 中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない やはりそこが重要なポイントですよね。 だからこそ、最終的にタスクにたどり着かない選択肢がある方が 自然だと思うのですがいかがでしょうか。 >>193 > 非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね > 抑止しちゃっていいと思うよ 言われてみると、構文に不慣れな方向けの警告であるという考えは とても納得ができました。 あとは、「自分は構文を十分に理解しているから警告を抑制しても構わないのだ」 という主張をいかにして人様に受け入れて貰うかが課題でしょうか(汗 http://mevius.5ch.net/test/read.cgi/tech/1528194762/203
204: デフォルトの名無しさん (ワッチョイ c251-G00F) [sage] 2018/06/18(月) 18:39:23.10 ID:rGsHjxJX0 >>196 > むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね > つかほんとにこれ警告だけで通って正常に動くの? > そのときHoge()で何が帰ってきてるんだ? 確かに一見すると不思議ですよね。 このあたりの詳しい話は TaskAwaiter で検索するとお知りいただけると思います。 >>197 >>201 > await Task.CompletedTask >>162 に書いていただいていることを仰っているのだと思いますが、 >>162 は >>161 の方法の不味さを説明するために await Task.CompletedTask を 引き合いに出されただけで、実際にこの方法を推奨されているわけではないと思います。 私自身も、async Task Hoge() { } と Task Hoge() => Task.CompletedTask; は それぞれメリットがあるのに対して sync Task Hoge() => await Task.CompletedTask; は すべての面で上 2 つに劣っていると考えておりますが、いかがでしょうか。 >>198 > 最適化してCompletedTaskでも返すのかなとも思ったけど > IL見ると他と同じようにコード生成して実行してんね 大変ためになる情報をどうもありがとうございます。 私も確認してみましたが、async Task Hoge() { } と Task Hoge() => Task.CompletedTask; との間にこれだけ IL のコードに差があると 前者を使うのは躊躇してしまいますね。そもそも私は > このオーバーヘッドが必要な処理 になる状況が分からず、CompletedTask を返すように最適化が行われるべきだと思うのですが、 「await なしの async」と「CompletedTask 返し」との間の違いに気づいていらっしゃるようであれば ぜひお教えいただけないでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1528194762/204
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s