2 потока включаемые в процессе работы скрипта
При начале действий в одном из них ставится глобальный флаг занятости, другой поток должен ждать снятия флага.
Но иногда в начале работы этого не происходит, и оба потока начинают действия одновременно (позже всё устаканивается).
Считал, прочтя описание, что это невозможно. Как избежать такой ситуации?
[spoiler=код]thread(t1, 0)
if ( $bBusy )
logwrite( "t1: жду" )
wait( 1 )
else
$bBusy = 1
logwrite( "t1: работа 5 c..." )
wait( 5 )
logwrite( "t1: ... завершена" )
$bBusy = 0
wait( 2 )
end_if
end_thread
thread(t2, 0)
if ( $bBusy )
logwrite( " t2: жду" )
wait( 1 )
else
$bBusy = 1
logwrite( " t2: работа 7 c..." )
wait( 7 )
logwrite( " t2: ... завершена" )
$bBusy = 0
wait( 2 )
end_if
end_thread
logshow(1)
logclear
$bBusy = 0
wait(1)
logwrite( "start threads" )
//wait(1)
setthread (t1, 1)
setthread (t2, 1)
while (1)
wait( 10 )
end_cyc
halt
[/spoiler]
[spoiler=лог]20:16:59 start threads
20:16:59 t1: работа 5 c...
20:16:59 t2: работа 7 c...
20:17:04 t1: ... завершена
20:17:06 t2: ... завершена
20:17:06 t1: работа 5 c...
20:17:08 t2: жду
20:17:09 t2: жду
20:17:10 t2: жду
20:17:11 t1: ... завершена
20:17:11 t2: работа 7 c...
20:17:13 t1: жду
20:17:14 t1: жду
20:17:15 t1: жду
20:17:16 t1: жду
20:17:17 t1: жду
20:17:18 t2: ... завершена
20:17:18 t1: работа 5 c...
20:17:20 t2: жду
20:17:21 t2: жду
20:17:22 t2: жду
20:17:23 t1: ... завершена
20:17:23 t2: жду
20:17:24 t2: работа 7 c...
20:17:25 t1: жду
[/spoiler]