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を持つセマフォを削除し
'ます。
|