Вверх ↑
Этот топик читают: Гость
Ответов: 1061
Рейтинг: 22
#1: 2012-02-20 12:17:20 ЛС | профиль | цитата
Здравствуйте!

Читал справку, пользовался поиском, но ответа на вопрос не нашёл! Вопрос: Создадутся-ли несколько копий схемы в MultiElementEx, Mode=OnlyOnce, если несколько событий произойдут одновременно (скорость работы схемы будет дольше, чем приход нового события)?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#2: 2012-02-20 12:26:18 ЛС | профиль | цитата
RinniX, в однопоточных программ несколько событий сразу произойти не могут физически, "наружу" контейнера управление передастся только после отработки внутренностей контейнера с последующим удалением содержимого. Если внутри контейнера будут настроенные без синхронизации многопоточные элементы типа работающих с http, то не исключаю вариант самоуничтожения схемы до завершения, например, закачки - могут быть нежелательные последствия в виде критических ошибок.
карма: 1

0
Ответов: 1061
Рейтинг: 22
#3: 2012-02-20 13:19:20 ЛС | профиль | цитата
1nd1g0 писал(а):
RinniX, в однопоточных программ несколько событий сразу произойти не могут физически

Вот это не очень понятно! Допустим в контейнер поступило событие, в контейнере начинаются процессы, поступает второе событие, а процессы в контейнере ещё не завершены, получается, что копия контейнера удаляется и создаётся новая копия контейнера! Так?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#4: 2012-02-20 13:39:42 ЛС | профиль | цитата
RinniX, в случае работы в одном потоке поступить второе событие не должно физически, основная программа на время исполнения внутренностей контейнера НЕ работает, "ждёт" отработки.
карма: 1

0
Ответов: 1061
Рейтинг: 22
#5: 2012-02-20 14:06:06 ЛС | профиль | цитата
1nd1g0 писал(а):
основная программа на время исполнения внутренностей контейнера НЕ работает, "ждёт" отработки.

Понял! Программа не пустит событие пока не выполнятся последовательная цепочка событий! А как быть в случае сервера? Если запросы от клиентов превышают время выполнения цепочки событий программы? Запросы не будут обработаны? Или есть какая-то очерёдность событий? Запоминаются-ли эти запросы или нет?
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#6: 2012-02-20 14:07:22 ЛС | профиль | цитата
RinniX, вот по проще:

Имеем всего один поток (без наворотов, так в большинстве случаев)
  В мультик стучится событие по нажатию кнопки (doWork1): мультик создается в памяти компьютера, все его элементы инициализируются и событие входит внутрь. Мультик что-то с ним делает, и перед возвратом на место входа все содержимое мультика безжалостно уносится в топку: code_26951.txt


Вариант с многопоточными приложениями вообще не советую рассматривать. Там все зависит от многих параметров: общие ли данные, много ли точек входа, сколько всего потоков работают с этим мультиком одновременно... И все это очень сильно пахнет жареным
------------ Дoбавленo в 14.07:
Эх, пока писал, уже все понял
карма: 10
0
файлы: 1code_26951.txt [1.2KB] [130]
Ответов: 3889
Рейтинг: 362
#7: 2012-02-20 14:16:31 ЛС | профиль | цитата
RinniX писал(а):
Запоминаются-ли эти запросы или нет?

Большинство сетевых компонентов, хоть это и не афишируется - многопоточные. Например, в TCP_ServerEx каждый клиент порождает свой, независимый поток, инициированный системой. Поток работает с новым экземпляром схемы, создаваемым при первом подключении. По идее, при отключении экземпляр должен уничтожаться, точнее можно сказать после изучения кода.
карма: 1

0
Ответов: 1061
Рейтинг: 22
#8: 2012-02-20 14:25:35 ЛС | профиль | цитата
Assasin, Спасибо! Так наглядней и понятней стало! +++++!

А в случае сервера что скажешь? Сохраняются события/запросы или они теряются в это время?
------------ Дoбавленo в 14.24:
1nd1g0 писал(а):
Большинство сетевых компонентов, хоть это и не афишируется - многопоточные. Например, в TCP_ServerEx каждый клиент порождает свой, независимый поток, инициированный системой. Поток работает с новым экземпляром схемы, создаваемым при первом подключении. По идее, при отключении экземпляр должен уничтожаться, точнее можно сказать после изучения кода.

Понятно! Т.е. во время пока программа обрабатывает свои события, параллельно работает только TCP_ServerEx, ну или многопоточные компоненты! Так?
------------ Дoбавленo в 14.25:
А какие ещё компоненты многопоточны?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#9: 2012-02-20 14:35:04 ЛС | профиль | цитата
RinniX писал(а):
А какие ещё компоненты многопоточны?

Многие, некоторые очевидно (запрограммировано авторами), некоторые - нет (система порождает потоки в процессе работы).
специально сделаны многопоточными
BenchmarkCPU
BenchmarkHDD
BenchmarkRAM
Cryptography
Debug
DirectoryChanges
DirectShowPlayer
EnumProcess
HTTP_Get
KE_Connect
MailSlot_Server
MutexThread
PBlur
Thread
UDP
WindowAnimation
WinExec
по инициативе системы многопоточными могут быть WebBrowser и прочие ActiveX компоненты, а также всё, что идёт после MMTimer - будет исполняться в отдельном потоке, ЕМНИП GHotKey тоже породит поток, то же с TCP_ServerEx, и это далеко не полный список, всего на вскидку не вспомнить.
карма: 1

1
Голосовали:RinniX
Ответов: 1061
Рейтинг: 22
#10: 2012-02-20 14:40:03 ЛС | профиль | цитата
1nd1g0, Спасибо! У тебя рейтинг не такой весёлый как у Assasin, поэтому могу позволить себе испортить его тебе!
карма: 0

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