2020年12月06日
川俣晶の縁側ソフトウェア技術雑記total 1488 count

.NET 5におけるBlazor WebAssemblyのマルチスレッド対応状況のまとめ

Written By: 川俣 晶連絡先

  • かつて、Blazor WebAssemblyのマルチスレッド対応は.NET 5とされていたが実現されていない
  • 現在は.NET 6のロードマップに乗っている(Real multithreading (on supported browsers))
  • async/awaitを利用した擬似マルチタスクは動作するが、UIスレッドの実行権をawaitでシステムに返さないとハングしてしまう問題がある
  • JavaScriptのWorkerの仕組みを利用したマルチスレッドのライブラリとしてTewr/BlazorWorkerがあるが、自分の手元では2.0.0が正常に動いていない (コンパイルエラーになる)

 現状の選択肢はおそらく3つ。

  • .NET 6を待つ (.NET 5を待っても実現されなかった実績があるので、不確定。そもそもWebAssemblyの仕様に含まれないらしい。個別ブラウザのスレッドの実装はある)
  • async/awaitを利用した擬似マルチタスクでお茶を濁す (機能的な制約は大きい)
  • Tewr/BlazorWorkerで対処する (しかし、メモリはスレッド間で共有されないので、Workerの制約をまるまるかぶる)

 決定版の解決策はない。いかに制約と機能の妥協を探るかだろう。

 とりあえず、Web関係者の危機感の無さと無能っぷりは本当に酷い。

 あの使いにくいJavaScriptを何年も放置して知らん顔をしていたのに、まだ同じことが繰り返されている。

オマケ §

 .NET 5のBlazor WAでWaitメソッドはPlatformNotSupportedExceptionになって動作しないようだ。awaitは動作する。実行がブロックされることを理解した上でWaitメソッドで待たせるコードは記述することができない模様。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2020年
12月
07日
.NET5について分かってきたことと感想まとめ
3days 5 count
total 4722 count
【技術雑記】の前のコンテンツ
2020年
11月
27日
【実験】.NET5でWindowsで起動された時のみレジストリを読みに行くプログラムは可能か?
3days 3 count
total 1637 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20201206141132
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.