short TestSetSharedVariable ( long idx, variant val );
テストした指定の共有変数の値が0であり、指定した値の書き込みに成功した場合0を返却します。
テストした指定の共有変数の値が0以外の場合、1を返却します。
idx:共有変数を指定するインデックス。0~65535の範囲で設定してください。
val:指定した共有変数にセットする値。データ型にはvariant(char型、short型、long(int)型、float型、double型のいずれかという意味です)が指定できます。
指定の共有変数の値をテストします。
成功すればその共有変数を指定の値にセットします。失敗すると共有変数の値は更新されません。
本関数を使用すると、複数のプロセスで排他区間(あるプロセスが他のプロセスとは排他的に行う処理)を設定できます。これにより、複数のプロセスで共有変数の値を排他条件にして所望の処理を行うことができます。
共有関数の詳細は「MOS関数で扱うリソース」の共有変数を参照してください。
〇PCベースコントローラ
〇InterMotion
《プロセス1》
void main() {
・・・・
//共有変数0をテストし、0であれば1を書き込む
while(1) {
if(TestSetSharedVariable(0, 1) == 0) {
break;
}
Sleep(10);
}
// プロセス2と排他的に行うべき処理
・・・・
// 排他区間の終了
WriteSharedVariable(0, 0);
・・・・
}
《プロセス2》
void main() {
・・・・
//共有変数0をテストし、1であれば2を書き込む
while(1) {
if(TestSetSharedVariable(0, 2) == 0) {
break;
}
Sleep(10);
}
// プロセス1と排他的に行うべき処理
・・・・
// 排他区間の終了
WriteSharedVariable(0, 0);
・・・・
}
}