SEMIDSTATE
(関数)
【RC7_Ver.2.2 以降】

指定したセマフォIDが有効か無効かを返します。

SEMIDSTATE(<セマフォID>)

指定したセマフォIDの「有効(1) / 無効(0)」を返します。
CREATESEM実行時セマフォIDは有効になり、DELETESEM実行時セマフォIDは無効になります。

PRO1、PRO2で使用するセマフォをTSR1で作成する。
SEMIDSTATEを使ってセマフォIDが有効でない時のみセマフォを作成するようにする。
'!TITLE "セマフォ作成"
|
|
PROGRAM TSR1
|
|
FOLDER DEFINT SEMID
|
'SEMIDが有効(1)でない時のみセマフォ作成
|
IF SEMIDSTATE (SEMID) <> 1
|
|
SEMID = CREATESEM (0)
|
|
ENDIF
|
|
END
|
|
|
|
'!TITLE "I0への書込みをセマフォで制御"
|
|
PROGRAM PRO1
|
|
EXTERN DEFINT SEMID
|
|
TAKESEM SEMID
|
|
I0=1
|
|
GIVESEM SEMID
|
|
END
|
|
|
|
'!TITLE "I0への書込みをセマフォで制御"
|
|
PROGRAM PRO2
|
|
EXTERN DEFINT SEMID
|
|
TAKESEM SEMID
|
|
I0=1
|
|
GIVESEM SEMID
|
|
END
|
|