Асинхронное и многопоточное программирование в MQL - страница 23

 
Maxim Romanov:
Объясните мне чем не подходит opencl. В терминале же реализована возможность писать код opencl, а это и есть многопоточность. Я хочу для себя понять в чем различия того многопотока о котором тут пишут и данной фишки.
Ну или кто знает, объясните, чтобы я понимал.

Видео карт нет на VPS серверах, или очень не рентабельно если они есть ))
Да даже у большинства юзеров на локалке, видюшки не поддерживают opencl  ))
Не говоря уже о сложности написания самого кода под opencl
Вариант да, есть, но для очень узкого круга лиц.

 
Roman:

Видео карт нет на VPS серверах, или очень не рентабельно если они есть ))
Да даже у большинства юзеров на локалке, видюшки не поддерживают opencl  ))
Не говоря уже о сложности написания самого кода под opencl
Вариант да, есть, но очень узкому кругу лиц.

На процессоре opencl тоже работает. Просто выбираешь устройство, которое будет выполнять код. Это не только для видеокарт технология. На серверах я знаю, что с видюхами беда.
 
Maxim Romanov:
На процессоре opencl тоже работает. Просто выбираешь устройство, которое будет выполнять код. Это не только для видеокарт технология. На серверах я знаю, что с видюхами беда.

А вот то, что opencl и на процессорах работает, не знал. Всё не как не доберусь до статьи Рената почитать про opencl.
Тут тоже проскакивал пост про opencl, но всех программистов не посадишь на opencl, штатные методы задач из коробки, как то юзабельней смотрятся ))
Получается opencl работает на любых процессорах? Или тоже зависит от модели?

 
Roman:

А вот то, что opencl и на процессорах работает, не знал. Всё не как не доберусь до статьи Рената почитать про opencl.
Тут тоже проскакивал пост про opencl, но всех программистов не посадишь на opencl, штатные методы задач из коробки, как то юзабельней смотрятся ))
Получается opencl работает на любых процессорах? Или тоже зависит от модели?

Вроде как да, на интеловских и на амд работать должен, надо только драйвера прставить. Я на амд пробовал, работало.
 
Maxim Romanov:
Вроде как да, на интеловских и на амд работать должен, надо только драйвера прставить. Я на амд пробовал, работало.

Получается всё таки какой то процент зависимости есть, или от модели процессора или от драйверов.
Это не всем может подойти, к примеру тем кто распространяет(продаёт) свои работы.
Есть тут люди, которым важна переносимость программы, на мой взгляд это тоже важный параметр.

А opencl умеет работать с пользовательскими dll?
т.е. асинхронно вызывать экспортируемые функции из dll ?
Был был штатный класс для работы с задачами, можно было бы вызывать свои функции из dll так же асинхронно.
То есть штатный функционал куда юзабельней получается, и более доступен в написании кода.

 

Очень жаль, что мы так и не услышали от начальника транспортного цеха - какую конкретно задачу Вы хотите реализовать многопоточно? Нарисуйте простенькую блок-схему предполагаемого решения задачи. 

Вы упорно пытаетесь втиснуть в МКЛ задачи для которых он изначально не предназначен. От слова совсем. Есть готовые решения - посмотрите ZeroMQ который имеет АПИ практически ко всем ЯП. Более того добрый человек Ding Li разработал библиотеку для использования ZeroMQ  с  MQL4/5 с множеством примеров. Почитайте тему в форуме по этой теме с практическим примерами кодов. 

Что Вы (топик стартер) толчете воду в ступе? Или Вы тоже привязаны к маркету?

Удачи

Interesting Whitepapers - zeromq
  • zeromq.org
Unlike other (centralised) messaging systems which are based on the well-understood theoretical foundation, there are almost no resources regarding distributed messaging in general and ØMQ in particular that an interested reader can be pointed to. The goal of this paper is to explain the elementary concepts of ØMQ architecture, how they fit...
 
Roman:

А opencl умеет работать с пользовательскими dll?
т.е. асинхронно вызывать экспортируемые функции из dll ?
Был был штатный класс для работы с задачами, можно было бы вызывать свои функции из dll так же асинхронно.
То есть штатный функционал куда юзабельней получается, и более доступен в написании кода.

Вызываете функцию ДЛЛ. Создаете в ДЛЛ поток и передаете ему данные, отсоединяете поток и забываете о нем - он сам завершится выполнив свою задачу. При отсоединении потока в ДЛЛ, поток терминала освобождается. Весь процесс занимает, полагаю, меньше миллисекунды. Сужу по тому, что даже не отсоединяя поток, процесс записи в БД составляет 4-5 мс. Ну, а 60 тиков/мин достаточно, чтобы не грустить об асинхронном вызове из терминала.

 
Vladimir Perervenko:

Очень жаль, что мы так и не услышали от начальника транспортного цеха - какую конкретно задачу Вы хотите реализовать многопоточно? Нарисуйте простенькую блок-схему предполагаемого решения задачи. 

Вы упорно пытаетесь втиснуть в МКЛ задачи для которых он изначально не предназначен. От слова совсем. Есть готовые решения - посмотрите ZeroMQ который имеет АПИ практически ко всем ЯП. Более того добрый человек Ding Li разработал библиотеку для использования ZeroMQ  с  MQL4/5 с множеством примеров. Почитайте тему в форуме по этой теме с практическим примерами кодов. 

Что Вы (топик стартер) толчете воду в ступе? Или Вы тоже привязаны к маркету?

Удачи

Сторонние решения стараюсь не использовать.
Для своей сетевой задачи я уже нашёл решение, осталось его изучить, применить и не ипать мозг.
Но тут есть программисты, которым тоже нужны не блокирующие вызовы и асинхронность.
Вот и предложил внедрить функционал в штатную поставку языка. А это уже на усмотрение разработчиков, главное идея, и она здравая.
Почему вы считаете что терминал не предназначен для внедрения EventLoop ? Тем более от слова совсем...
Локальные агенты по какому алгоритму выполняются? Вероятно же в пуле потоков? Кто ими управляет, распределяет задачи?
Значит подобный алгоритм уже есть в терминале, почему бы его не использовать для расширения функционала?
Дать программистам асинхронный режим написания кода. 
Я за идею, если она не кому не нужна асинхронность, ну что сказать, я сожалею только, что многие застряли в одном потоке.
 

 
Yuriy Asaulenko:

Вызываете функцию ДЛЛ. Создаете в ДЛЛ поток и передаете ему данные, отсоединяете поток и забываете о нем - он сам завершится выполнив свою задачу. При отсоединении потока в ДЛЛ, поток терминала освобождается. Весь процесс занимает, полагаю, меньше миллисекунды. Сужу по тому, что даже не отсоединяя поток, процесс записи в БД составляет 4-5 мс. Ну, а 60 тиков/с достаточно, чтобы не грустить об асинхронном вызове из терминала.

Вот, спасибо за ещё одну идею, dll писать могу по местным статьям, но к сожалению в них не описана процедура точки входа, инициализации, выделения памяти, создание потока и т.д.
Сколько не искал литературу на эту тему, не могу найти как правильно работать с точкой входа. Если есть где инфа по этому поводу дайте пожалуйста знать.
Или если сможете научить, то с удовольствием приму знания.
Я не учился на программиста, всё изучаю сам, по этому не пинайте меня зануду ))

 
Maxim Romanov:
Объясните мне чем не подходит opencl. В терминале же реализована возможность писать код opencl, а это и есть многопоточность. Я хочу для себя понять в чем различия того многопотока о котором тут пишут и данной фишки.
Ну или кто знает, объясните, чтобы я понимал.
Честно говоря, opencl внимательно не изучал. Уловил какую то зависимость этого решения и перестал интересоваться. Подумалось, нужно провода тянуть из одного места в другое и что то прикручивать на соплях. Возможно, неправ абсолютно, но практиков использующих opencl здесь не встречал и сломать мое предубеждение было некому. Возможно, потом поменяю точку зрения, когда поближе познакомлюсь, или наоборот. В любом случае, внешняя зависимость напрягает, потому что переносимость программ для меня критически важна.