Показать сообщение отдельно
Старый 31.10.2008, 12:06   #19  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
378 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Цитата:
Сообщение от Bakai Madybaev Посмотреть сообщение
При регистрации плагина выбираете Execution mode - Synchronous (Синхронный режим выполнения) - дубликатов быть не должно.
Вот кстати очень хороше что речь зашла о синхронности, потому что есть огромнейший вопрос насчет нее.

Гипотетическая ситуация: сущность Account, на Pre-Create зарегистрировано два плагина - PlugIn1 и PlugIn2 (плагины разные, зарегистрированы синхронно).

Два человека на двух разных компах инициировали событие Pre-Create сущности Account.

По вашему получается, что пока не выполняться PlugIn1 и PlugIn2 для одного пользователя, эти плагины не начнут выполняться для другого пользователя (или может быть пока не выполниться PlugIn1 для одного пользователя он не начнет выполняться для другого).
Но такая последовательность выполнения плагинов должна жутко тормозить систему. Получается что пользователи выстраиваются в очередь на обработку плагинов.

Не правильнее ли думать, что синхронность будет заключаться в том, что у одного пользователя оба плагина будут выполняться синхронно, тоесть пока не отработает PlugIn1, не запуститься PlugIn2 (а не так, что плагины отработают когда то потом и в какой последовательности фик знает). При этом у второго пользователя эти плагины работают так же но в параллельном потоке. Таким образом пользователи не мешают друг-другу.

Но тогда как раз и может возникнуть ситуация, что в двух параллельных потоках одновременно идет доступ к одним и тем же данным.