おれんじりりぃぶろぐ

きっと何者にもなれないエンジニアのブログ

CSharp

Unityのマルチスレッド界隈のはなし

Unityでのマルチスレッド界隈について断片化した理解にとどまっていたので、自分なりのまとめを行ってみました。 まず非同期実装と並列プログラミングは分けて考えよう 非同期実装は順番通りに処理を実行しない、逐次処理とは対比的な処理のことである 非同…

Unityコルーチンをawaitするサンプル

概略 C#5からawait句が導入され非同期実装がとてもお手軽にできるようになりました。 awaitはTaskへ使うものと思ってしまいがちですが、一定の条件を満たせばawaitを使った非同期実装を行うことが出来ます。 実装 AwaitHelloWorld.cs using System; using Sy…

Unity2018での文字列の扱い方

概略 Unityで文字列の連結を行う方法として以下の3つのパフォーマンスを比較してみました。1000回ループし文字列を連結させた時の処理時間とGC回数を計測しました。 string(StingTest) stringBuilder(StringBuilderTest) 文字列補間(BuildInStringTest) C#6…

Unityでの並列プログラミング(Parallel、PLinq)のパフォーマンス比較

概略 .NET4.0からは、簡易に並列処理を記述することができるParallelクラス、Parallel LINQ(PLinq)の提供がはじまりました。 今回は、前半でParallクラス、PLinqの使い方を見て、後半ではUnityでの実際のパフォーマンス調査を行った結果を示します。 Paralle…

UnityにおけるAwaitAsyncを使った非同期実装について④

概略 前回までに最新Unityにおけるマルチスレッドプログラミングについて、さらにその時直面する問題点について紹介してきました。今回は、Task、awaitを使ったマルチスレッドでの排他制御について触れていきたいと思います。 今回も特にUnityに特化した情報…

UnityにおけるAwaitAsyncを使った非同期実装について③

これまでTask、AsyncAwaitを使った非同期処理の実装、メインスレッド以外から特定の(メイン)スレッドにアクセスする方法についてみてきました。 今回は、複数の非同期に実行されるTaskをハンドリングする方法について説明します。今回もUnityに特化した情…

UnityにおけるAwaitAsyncを使った非同期実装について①

概略 Unity2018.1から正式に.Net4.7、C#6への対応がなされます。 C#5からは、非同期的な実装をまるで同期的に記述できるasync/awaitというキーワードが導入されました。今回はasync/awaitを使ったUnityにおけるマルチスレッドプログラミングについて解説を行…