Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
勉強になりました。ありがとうございます。
最高に分かりやすかったです。本当にありがとうございました!
実体がつかめなくてずっと心残りだったんですが、ようやく理解できそうです。ありがとうございます!
わかりやすい動画をありがとうございます!質問なのですが、基底の抽象クラスで同期メソッドとして宣言したものを派生先(例えば派生A、派生B)のクラスのうち派生Bのみでawaitを使いたい場合どのように設計するのがいいのでしょうか?たとえば基底クラスでabstract void GetValue();と宣言したとき派生BではUniTaskVoid型が使えずasync voidを使うことになってしまいます。逆に基底クラスでabstract async UniTaskVoid GetValue();と宣言すると派生AではUniTaskVoidならasyncつけてね→つける→await使ってないのにasyncになってるよ!と怒られてしまいます。voidじゃないときも同様です!(async UniTaskなど)もしおすすめの対処法などあったら教えていただきたいです!
求めているものになっているか分かりませんが、手元でこんな感じのコードにしてみたら特に警告が出ることもなかったです↓Unityのバージョンは2020.3.2f1、UniTaskのバージョンは2.2.5です。gist.github.com/ina-amagami/51656d977297541e494964a147b9dfc7UniTaskVoidはほとんど使ったことなくてこういう扱い方をして良いのかはちょっと分かりません…。public override async UniTask GetClassName(){ return await UniTask.FromResult("A");}のように書けばasyncを付けていても同期のように扱えるので、すべてasyncでも良いのではないかとは思います。
冒頭のasync/awaitについて解説動画なら、エイシンク、アウェイトが正しい読みですと説明しておいた方が良いのではないかと思いました。
ご指摘ありがとうございます。DOTweenの動画では補足したのに今回はすっかり忘れてました^^; 以降気をつけます!
速攻で矛盾したこと解説するのってどうなんですかね…14:45 マルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される。15:10 マルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される。
14:45 マルチコアで実行するマルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される(マルチスレッドはこういうイメージで捉えれば問題ない)。15:10 シングルコアで実行するマルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される(厳密にはこういう挙動をしている)。ですね。資料を作った段階ではそういう流れで説明するつもりだったのが喋る時には説明が抜け落ちていました。申し訳ないです
勉強になりました。ありがとうございます。
最高に分かりやすかったです。本当にありがとうございました!
実体がつかめなくてずっと心残りだったんですが、ようやく理解できそうです。ありがとうございます!
わかりやすい動画をありがとうございます!
質問なのですが、基底の抽象クラスで同期メソッドとして宣言したものを
派生先(例えば派生A、派生B)のクラスのうち派生Bのみでawaitを使いたい場合
どのように設計するのがいいのでしょうか?
たとえば基底クラスでabstract void GetValue();
と宣言したとき
派生BではUniTaskVoid型が使えずasync voidを使うことになってしまいます。
逆に基底クラスでabstract async UniTaskVoid GetValue();
と宣言すると
派生AではUniTaskVoidならasyncつけてね→つける→await使ってないのにasyncになってるよ!と怒られてしまいます。
voidじゃないときも同様です!(async UniTaskなど)
もしおすすめの対処法などあったら教えていただきたいです!
求めているものになっているか分かりませんが、手元でこんな感じのコードにしてみたら特に警告が出ることもなかったです↓Unityのバージョンは2020.3.2f1、UniTaskのバージョンは2.2.5です。
gist.github.com/ina-amagami/51656d977297541e494964a147b9dfc7
UniTaskVoidはほとんど使ったことなくてこういう扱い方をして良いのかはちょっと分かりません…。
public override async UniTask GetClassName()
{
return await UniTask.FromResult("A");
}
のように書けばasyncを付けていても同期のように扱えるので、すべてasyncでも良いのではないかとは思います。
冒頭のasync/awaitについて
解説動画なら、エイシンク、アウェイトが正しい読みですと説明しておいた方が良いのではないかと思いました。
ご指摘ありがとうございます。DOTweenの動画では補足したのに今回はすっかり忘れてました^^; 以降気をつけます!
速攻で矛盾したこと解説するのってどうなんですかね…
14:45 マルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される。
15:10 マルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される。
14:45 マルチコアで実行するマルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される(マルチスレッドはこういうイメージで捉えれば問題ない)。
15:10 シングルコアで実行するマルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される(厳密にはこういう挙動をしている)。
ですね。資料を作った段階ではそういう流れで説明するつもりだったのが喋る時には説明が抜け落ちていました。申し訳ないです