TAKESEM  (ステートメント)


指定したセマフォIDを持つセマフォを取得します。


TAKESEM <セマフォID>[,<タイムアウト時間>]


<セマフォID>で指定したセマフォを取得します。
取得時に他のタスクがセマフォを取得している場合は、そのセマフォが解放されるのを待ちます。
オプションの<タイムアウト時間>で、待ち時間の限度をmsの単位で指定できます。指定した時間の間にセマフォを取得できなかったときは、エラーになります。



タイムアウト時間を使用する際には、命令実行中に瞬時停止を行ない再起動すると、一時停止中も待ち時間は経過しますので注意してください。


DEFINT Li1, Li2, Li3 = 1
Li1 = CREATESEM(Li3)
'Li3で指定したキューイング方式でセマフォを生成し、
'Li1にセマフォIDを得ます。
Li2 = CREATESEM(Li3)
'Li3で指定したキューイング方式でセマフォを生成し、
'Li2にセマフォIDを得ます。
TAKESEM Li1
'Li1で指定されるセマフォを取得します。
TALESEM Li2, 100
'Li2で指定されるセマフォを取得します。ただし、100ms
'でタイムアウトします。
RUN samp1
GIVESEM Li1
'Li1で指定されるセマフォを持つ一つのタスクを待ち
'状態から解放します。
FLUSHSEM Li2
'Li2で指定されるセマフォを持つすべてのタスクを待
'ち状態から解放します。
DELETESEM Li1
'Li1で指定されるセマフォIDを持つセマフォを削除し
'ます。
DELETESEM Li2
'Li2で指定されるセマフォIDを持つセマフォを削除し
'ます。