アプリケーション(プロセス)は 1 つあたり 1 つの MCR を使用します。この MCR はアプリケーションのプロセスによりロックされています。このため、プロセス内に複数のコンポーネント(スレッド)がある場合でも、これらは 1 つの MCR に同時にアクセスすることはできません。
DEPLOYTOOL での「オブジェクトは、共有 MCR のインスタンスを作成」オプションや、MCC コマンドでの「シングルトン MCR の作成」 (-S オプション) を使用する場合も同様です。これらのオプションは MATLAB 環境、例えば、これらのコンポーネントの元となる MATLABコードが動作するワークスペースを、コンテキストとして独立させますが、MCRは1つのプロセスに1つのMCRとなり、共有となります。
複数のMCRを使用するための唯一の方法は、複数のプロセスの起動です。例えばアプリケーションをもうひとつ起動すれば、そのプロセス用にもうひとつ MCR が起動し、コンピュータ上には 2 つの MCR が動作することになります。または、MATLAB Production Server (MPS) ( <http://www.mathworks.com/products/matlab-production-server/> ) が複数のプロセスの使用により複数の MCR エンジンの使用を実現できます。
例えば、MATLAB Builder NE により作成された複数の .NET アセンブリを使用する「myApp」というアプリケーションを考えてみます。これらのインスタンスは実際には 1 つの MCR を使用しています。これは、 MATLAB を 1 つ起動し、複数の MATLAB のプログラムファイルを次々と実行することと同様です。
しかし、2 つの「myApp」が同時に実行される場合は、それぞれのプロセスで 1 つずつ、合計 2 つの MCR エンジンが動作しています。これは、同時に 2 つの MATLAB を起動し、それぞれで同じ MATLAB プログラムファイルを実行することと同様です。
ただし、シングル CPU またはシングルコアのマシンでは複数の MCR の処理を 1 つのコアで行うことになりますので、高速化は期待できず、むしろオーバーヘッド等で遅くなる場合もありますのでご注意ください。