コンテンツにスキップ

スレッドセーフティ

cTraderがアルゴリズムを実行する方法

cTraderは各インジケーターまたはcBotを、cTrader Windowsのメインプロセスから分離された別のサブプロセスで実行します。 つまり、インジケーターとcBotの新しいインスタンスはすべて別々のプロセスで実行されます。

このアプローチにより、cTraderは別々のプロセスにコードアクセス制限を課すことができ、安全性と安定性が向上します。

さらに、個別のインジケーターまたはcBotプロセスは、cTrader Windowsのメインプロセスとリソースを共有しません。 インジケーターやcBotに問題が発生しても、その問題がcTrader自体に影響を与えることはありません。

メソッドとスレッドセーフティ

APIのメソッドのうち、スレッドセーフ(任意のスレッドから呼び出し可能)なものはごくわずかです。 それ以外はすべてcBotまたはインジケーターのメインスレッドで実行する必要があります。

メインスレッドでコードを実行する

cBotまたはインジケーターのメインスレッドで何かを実行するには、BeginInvokeOnMainThread()メソッドを使用します。 このメソッドはアクションデリゲートを受け取り、実行中の任意のスレッドから呼び出すことができます。

インスタンス間でデータを共有する

各インジケーターまたはcBotインスタンスは単一の子プロセスで実行されるため、静的プロパティまたはフィールドを使用して、同じcBotまたはインジケーターの異なるインスタンス間でデータを共有できます。