Вверх ↑
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
#1: 2013-11-09 23:52:15 ЛС | профиль | цитата
Справку читал. И не один раз. Объясните по простому ( может наглядный пример ) для чего эти компоненты нужны? Точнее в каких случаях могут пригодиться. Особенно не понятно про защиту мьютексом и синхронизируемые потоки. с обычным потоком вроде разобрался
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#2: 2013-11-10 00:56:18 ЛС | профиль | цитата
Add(MainForm,2953706,140,105)
{
Width=450
Height=193
Position=1
link(onCreate,12725765:doDeferredEvent,[])
}
Add(MutexThread,5469865,294,182)
{
Delay=20
FastStop=0
OneWaitSyncExec=0
PrefixName="My"
Mutex=0
Point(onWaitSyncExec)
link(onExec,9627620:doWork1,[])
link(onWaitSyncExec,15063737:doWork1,[])
}
Add(ChildForm,15063737,357,196)
{
}
BEGIN_SDK
Add(EditMulti,15659002,21,21)
{
WorkCount=2
link(doWork1,7836100:doVisible,[(74,27)(74,118)])
link(doWork2,7836100:doClose,[(67,34)(67,111)])
}
Add(MainForm,7836100,84,84)
{
Left=35
Top=105
Width=461
Height=81
Visible=1
Position=1
Point(doVisible)
}
Add(Label,8320920,145,91)
{
Left=5
Top=5
Width=434
Height=33
Font=[MS Sans Serif,18,1,0,1]
Caption="Ожидаем завершения 1-го потока"
}
END_SDK
Add(For,2050135,357,119)
{
End=100000000
link(onStop,15063737:doWork2,[(396,132)(396,237)(347,237)(347,209)])
}
Add(DeferredEvent,12725765,196,119)
{
link(onDeferredEvent,16283596:doEvent1,[])
}
Add(Hub,16283596,252,119)
{
link(onEvent1,616003:doStart,[])
link(onEvent2,5469865:doStart,[(284,132)(284,188)])
}
Add(MutexThread,616003,294,119)
{
Delay=10
FastStop=0
OneWaitSyncExec=0
PrefixName="My"
Mutex=0
link(onExec,2050135:doFor,[])
}
Add(ChildForm,9627620,413,182)
{
}
BEGIN_SDK
Add(EditMulti,4002136,21,21)
{
WorkCount=2
link(doWork1,10627162:doVisible,[(74,27)(74,118)])
link(doWork2,10627162:doClose,[(67,34)(67,111)])
}
Add(MainForm,10627162,84,84)
{
Left=35
Top=105
Width=461
Height=81
Visible=1
Position=1
Point(doVisible)
}
Add(Label,9271910,145,91)
{
Left=5
Top=5
Width=434
Height=33
Font=[MS Sans Serif,18,1,0,1]
Caption="Запустили 2-й поток"
Alignment=2
}
END_SDK

карма: 22

0
Ответов: 257
Рейтинг: -2
#3: 2013-11-10 19:58:43 ЛС | профиль | цитата
В зачем там defferedEvent? И почему не работает вот так?
code_32291.txt
карма: 0

0
файлы: 1code_32291.txt [720B] [121]
Разработчик
Ответов: 26324
Рейтинг: 2148
#4: 2013-11-10 20:05:06 ЛС | профиль | цитата
mudfactory писал(а):
В зачем там defferedEvent?

Да выкинуть можно.
mudfactory писал(а):
И почему не работает вот так?

Потому, что второй поток не успевает перейти в ожидание до отработки первого, это просто пример работы перехода в ожидание. Для таких целей лучше использовать SafeMode
карма: 22

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)