Unity用のプラグイン、Fast Shadow Receiverを開発したときの話。 Unityは基本的にシングルスレッドで動くゲームエンジンである。マルチコアプロセッサの場合、スキニングの処理はマルチスレッドで行なわれるのだが、スクリプトで書かれた処理はシングルスレッドが大前提である。 しかし、Unityエンジンが管理していないデータを扱うぶんにはマルチスレッドで処理しても良い。驚いたことにUnityのObjectはnullチェックをすることすらマルチスレッドで出来ないのである。Objectは比較演算子をオーバーライドしていて、nullチェックをするにもUnityエンジンにお伺いを立てているようである。 というわけで、メインスレッドでUnityのObjectから情報を集めておいて、その情報をワーカースレッドに渡してバックグラウンドで処理をすることになる。このときに便利なのがSystem