Параллельная обработка в МТ4

 

Есть задача:

Эксперт работает на нескольких торговых инструментах и использует общую DLL.

DLL производит первичную обработку и передает данные на SQL сервер.

Вопрос 1:

Требуется ли в DLL предусмотреть механизм синхронизации параллельных вычислений, типа семафора, или подобный механизм уже реализован в самом МТ4?

Вопрос 2:

Возможно ли реализовать подобный механизм средствами МТ4?

 

Каждый эксперт или скрипт в МТ работает в собственном потоке, поэтому по идее несколько экспертов повешенных на несколько графиков одной и той же валютной пары, должны работать (ну или начинать работать (по приходу свежего тика)) одновременно, но вообще то это вопрос к метаквотам.

 
еще не стоит забывать, что даже если в нескольких экспертах используется одна и та же ДЛЛ, каждый из них подгружает в память отдельную ее копию
 
alsu:
еще не стоит забывать, что даже если в нескольких экспертах используется одна и та же ДЛЛ, каждый из них подгружает в память отдельную ее копию
Оказывается это не так. Глобальная область DLL общая и доступна для всех экспертов. Стало быть, копия одна.
 
Zhunko:
Оказывается это не так. Глобальная область DLL общая и доступна для всех экспертов. Стало быть, копия одна.

Ага. Получается, что не советник, а терминал загружает dll, а все ей пользуются, одним экземпляром.
 
zem32:

Есть задача:

Эксперт работает на нескольких торговых инструментах и использует общую DLL.

DLL производит первичную обработку и передает данные на SQL сервер.

Вопрос 1:

Требуется ли в DLL предусмотреть механизм синхронизации параллельных вычислений, типа семафора, или подобный механизм уже реализован в самом МТ4?

Вопрос 2:

Возможно ли реализовать подобный механизм средствами МТ4?


На оба вопроса ответ да.

Нужно реализовывать механизм синхронизации.

Синхронизацию можно сделать средствами MT4

 
На второй вопрос ответ "нет". Используйте стандартные виндовые механизмы.
 
По опыту, скажу, что можно синхронизировать средствами MQL4, но лучше этого не делать. Всё гораздо проще и надёжне стандартными средствами.
 
Был уже разговор, с разборами. Можно свести количество коллизий к минимуму, но их вероятность будет пусть 1 на миллион, миллиард, но ненулевой.
 
Zhunko:
По опыту, скажу, что можно синхронизировать средствами MQL4, но лучше этого не делать. Всё гораздо проще и надёжне стандартными средствами.

Абсолютно согласен, но у меня работают оба варианта.
 
Integer:

Ага. Получается, что не советник, а терминал загружает dll, а все ей пользуются, одним экземпляром.
Отметил для себя, что последний раз читал раздел справки про импорт функций года этак три назад. Конечно, память может мне и изменять, но раньше там, кажется, было написано как раз наоборот)))) Видимо, соответствующее внесение изменений в терминал прошло для меня незамеченным...