Падение клиента MT4 после использования DLL - страница 3

 
amikkima:

Я использую  std::thread. Потоки завершаются самостоятельно, более того основной поток ждет пока не закончится выполнение дополнительных.

Вот здесь хороший и понятный пример.

Как уже говорил ранее, эксперт ни шагу не сделает пока не дождется ответа от библиотеки, а она выдаст ответ только когда все потоки завершатся.

Эксперт в итоге нормально получает ответ, подготавливает шаблон, применяет его и терминал схлопывается.

Не использую поток STL. Убогий он. У меня свой класс для организации потока. Даже два. С разным принципом удержания потока. При чём, сам класс и его методы являются объектом потока.

Сделайте:

В DllMain сделать ожидание завершения при её выгрузке.

 или

1. Делать невыгружаемую библиотеку.

 В первом случае классы потоков будут глобальными. Надо делать их синглетонами.

======================

Т.е. библиотека выгружается раньше, чем завершаются потоки. Вернее, есть такая попытка. На ХР с терминалом они завершаются некорректно.

 
amikkima:

Не совсем понял, т.е. вы предлагаете вместо встроенного MQL4 импорта вида

Нет, просто логов в дллку добавить, я так понимаю она ваша, если падает в ней. Если не в ней, найти где и танцевать от печки.
 

Терминал очень качественно проработан на предмет подключения dll.

Если валится читай учебники как правильно писать dll. 

Если уж на то пошло, то лучше вычисления передавать в стороннее приложение по одному такту а по второму считывать результаты вычислений, так не будет тормозов у терминала и с многопоточностью будет гораздо проще.

Я давно отказался от использования dll для каких либо сложных вычислений. Терминал сам по себе, вычисления сами по себе. 

Таким макаром можно обсчеты производить в x64 приложениях для x32 терминала MT4. 

И падать ничего не будет гарантированно. 

А вариантов передачи бесчисленное множество. 

Причина обращения: