Canvas에서 크라우드소싱 프로젝트 만들기 - 페이지 34

 
Roman :

의미를 이해했습니다. 응용 프로그램이 분리되어 있고 GUI가 분리되어 있습니다.
그러나 GUI에서 출력 데이터 처리는 여전히 동기식으로 수행됩니다.
즉, 예를 들어 애플리케이션은 10,000개의 요소를 GUI로 보내고 GUI는 이러한 모든 요소를 순차적으로 처리합니다.
그게 문제 야. GUI에서 들어오는 요소의 처리와 출력을 병렬화하는 데 필요합니다. 기본, 텍스트, 아이콘입니다.
또한 셀당 3개의 사이클이 수행됩니다.

괜찮은. 그러나 현재 상황에서는 처리를 병렬화하는 것이 불편합니다. 더 많은 고문이나 서비스를 연결해야 합니다. 번거롭고 깨진 구현으로 끝날 것입니다.(

차트 개체를 기반으로 하는 방법이 있습니다. 자세히 다루지는 않았지만 여러 스레드를 만드는 데 도움이 될 수 있습니다. 템플릿과 관련이 있습니다 ...

 
Roman :

의미를 이해했습니다. 응용 프로그램이 분리되어 있고 GUI가 분리되어 있습니다.
그러나 GUI에서 출력 데이터 처리는 여전히 동기식으로 수행됩니다.
즉, 예를 들어 애플리케이션은 10,000개의 요소를 GUI로 보내고 GUI는 이러한 모든 요소를 순차적으로 처리합니다.
그게 문제 야. GUI에서 들어오는 요소의 처리와 출력을 병렬화하는 데 필요합니다. 기본, 텍스트, 아이콘입니다.
또한 셀당 3개의 사이클이 수행됩니다.

이것은 작동하지 않을 것입니다. Windows조차도 하나의 스레드에서 인터페이스를 처리합니다. 그렇지 않으면 창과 컨트롤의 우선 순위가 결정되지 않습니다. GUI 자체와 각종 데이터의 처리만 쓰레드로 나눌 수 있다. 사실상 컨트롤의 데이터를 변경하는 것조차 다른 스레드에서 허용되지 않습니다. 대화는 항상 완전해야 하므로 모든 대화의 그리기와 반응은 엄격하게 하나의 스레드에서 발생합니다. 즉, 모든 것이 동기적으로 발생합니다.

 
Алексей Барбашин :

MT의 모든 작업은 엄격하게 동기적으로 수행되며 개발자가 응용 프로그램에 스레드를 추가할 때까지 실제로 변경할 수 없습니다.

개발자가 데이터베이스 작업 측면에서 MT의 기능을 확장하려고 한다는 것은 매우 놀라운 일입니다. Python을 사용하여... 그러나 이 모든 것이 동일한 하나의 스레드에서 수행되도록 제공됩니다...
정말 놀랍습니다.

놀라움에 동의합니다.
유일한 방법은 비동기 기능이 있는 dll을 애플리케이션에 보내는 것입니다.
그러나 이러한 응용 프로그램은 dll 금지로 인해 코드 기반에 배치할 수도 없습니다.

 
Алексей Барбашин :

이것은 작동하지 않을 것입니다. Windows조차도 하나의 스레드에서 인터페이스를 처리합니다. 그렇지 않으면 창과 컨트롤의 우선 순위가 결정되지 않습니다. GUI 자체와 각종 데이터의 처리만 쓰레드로 나눌 수 있다. 사실상 컨트롤의 데이터를 변경하는 것조차 다른 스레드에서 허용되지 않습니다. 대화는 항상 완전해야 하므로 모든 대화의 그리기와 반응은 엄격하게 하나의 스레드에서 발생합니다. 즉, 모든 것이 동기적으로 발생합니다.

그리고 모든 것이 잘 될 것 같습니다. 비동기 데이터 처리의 우선 순위에 대해 미리 생각하면됩니다.
즉, 동기식으로 비동기식 처리 체계를 구축하는 것입니다.

 
Roman :

놀라움에 동의합니다.
유일한 방법은 비동기 기능이 있는 dll을 애플리케이션에 보내는 것입니다.
그러나 이러한 응용 프로그램은 dll 금지로 인해 코드 기반에 배치할 수도 없습니다.

사실, 아직 GUI 이벤트 처리 를 병렬화할 필요가 없습니다. 1000개의 셀로 구성된 테이블이 MT4에서도 비교적 빠르게 작동한다면 다른 이벤트의 속도는 충분합니다. 내 연습에는 억제가 없습니다. 초고속 애니메이션이 필요한 경우 OpenCL을 연결할 수 있습니다. MT5는 일반적인 GUI를 완벽하게 가져옵니다. 괜찮아요. 방금 캔버스를 다시 그리는 데 주의해야 함을 보여주었습니다.

EA 자체에 많은 계산이 포함되어 있으면 GUI로 출력되는 데이터의 빈도를 줄일 수 있습니다. 큰 창 다시 그리기 자체에는 최대 100ms가 소요될 수 있지만 일반적으로 훨씬 적습니다. 따라서 GUI에서 100ms의 지연은 매우 무거운 EA 계산에서만 감지할 수 있습니다.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Roman :

놀라움에 동의합니다.
유일한 방법은 비동기 기능이 있는 dll을 애플리케이션에 보내는 것입니다.
그러나 이러한 응용 프로그램은 dll 금지로 인해 코드 기반에 배치할 수도 없습니다.

DLL 수준에서 많은 작업을 수행할 수 있습니다.

그것이 MT가 의도하지 않은 모든 것이며 거기에서 할 수 있습니다. :-)

dll은 제어할 수 없으므로 시장에 없습니다. 그런데 코드베이스에서 dll이 발생합니다. 아마도 어떤 종류의 두려움으로 지금 금지되어있을 것입니다.

추신: 그런데 궁금한 점이 있습니다. DLL은 개발자 키로 서명할 수 있습니다. 이론적으로 시장과 코드 기반에서 이러한 DLL을 허용하는 것이 가능하지만 이는 Microsoft 인프라에 대한 링크를 제공합니다. 여기서 누가 Visual C용 라이선스를 구매할 준비가 되었습니까?
 
Roman :

놀라움에 동의합니다.
유일한 방법은 비동기 기능이 있는 dll을 애플리케이션에 보내는 것입니다.
그러나 이러한 응용 프로그램은 dll 금지로 인해 코드 기반에 배치할 수도 없습니다.

예, 이것이 주요 문제입니다! 같은 시장에서는 dll의 사용을 금지하므로 바퀴를 재발명해야 합니다. 글쎄, 누군가 GUI가 필요하지 않다고 생각하지만 어쨌든 하나의 스레드에서 복잡한 장기 계산을 수행할 수 없다면 모든 것이 중단될 것입니다! 그래서 이것은 시장에서 금지된 dll .. 에서 이루어져야 합니다 ...

등. 이러한 이유로 모든 것은 mql 메서드를 사용하여 그려지고 해결되어야 합니다.

사실, GUI와 로직을 스레드로 나누는 것은 물론, 이미 지금 할 수 있습니다. 사람들은 이미 병렬 처리 문제에 대해 논의했습니다. https://www.mql5.com/en/forum/288985/page5#comment_14722396.

결과적으로 Windows에서와 같이 양식 자체를 기본 스레드에 남겨두고 추가 계산을 "백그라운드" 실행으로 전송할 수 있습니다. 이것이 Windows, Linux 및 Android가 작동하는 방식입니다.

Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками"
Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками"
  • 2020.01.25
  • www.mql5.com
Опубликована статья Многопоточный асинхронный WebRequest на MQL5 своими руками: Автор: Stanislav Korotky...
 
Maxim Kuznetsov :

DLL 수준에서 많은 작업을 수행할 수 있습니다.

그것이 MT가 의도하지 않은 모든 것이며 거기에서 할 수 있습니다. :-)

dll을 제어할 수 없으므로 시장에 없습니다. 그런데 코드베이스에는 dll이 있습니다. 아마도 어떤 종류의 두려움으로 지금 금지되어있을 것입니다.

추신: 그런데 궁금한 점이 있습니다. DLL은 개발자 키로 서명할 수 있습니다. 이론적으로 시장과 코드 기반에서 이러한 DLL을 허용하는 것이 가능하지만 이는 Microsoft 인프라에 대한 링크를 제공합니다. 여기서 누가 Visual C용 라이선스를 구매할 준비가 되었습니까?

예, dll을 제어하는 것은 불가능하지만 동일한 Windows 라이브러리는 허용할 수 있습니다...

멀리 가야 하는 이유: 표준 라이브러리 의 일부로도 winAPI에 액세스하기 위한 함수가 있습니다! 의미는 어떻습니까? 결국 모든 것을 일찍 시장에 내놓을 수는 없습니다 ....

좋아요, 우리는 이 대화로 또 다른 홍수에 빠졌습니다.

 
Maxim Kuznetsov :

DLL 수준에서 많은 작업을 수행할 수 있습니다.

그것이 MT가 의도하지 않은 모든 것이며 거기에서 할 수 있습니다. :-)

dll은 제어할 수 없으므로 시장에 없습니다. 그런데 코드베이스에서 dll이 발생합니다. 아마도 어떤 종류의 두려움으로 지금 금지되어있을 것입니다.

추신: 그런데 궁금한 점이 있습니다. DLL은 개발자 키로 서명할 수 있습니다. 이론적으로 시장과 코드 기반에서 이러한 DLL을 허용하는 것이 가능하지만 이는 Microsoft 인프라에 대한 링크를 제공합니다. 여기서 누가 Visual C용 라이선스를 구매할 준비가 되었습니까?

그리고 무엇을 위해 Microsoft의 인프라에 고정해야 합니까?
제 생각에는 절대적으로 모든 키로 dll에 서명할 수 있습니다. 가장 중요한 것은 이 키가 어떻게든 MQ에 의해 제어된다는 것입니다.
따라서 이러한 키는 MQ에서 발행해야 하며 애플리케이션의 해시 합계를 제어해야 합니다.

 
Roman :

그리고 무엇을 위해 Microsoft의 인프라에 고정해야 합니까?
제 생각에는 절대적으로 모든 키로 dll에 서명할 수 있습니다. 가장 중요한 것은 이 키가 어떻게든 MQ에 의해 제어된다는 것입니다.
따라서 이러한 키는 MQ에서 발행해야 하며 애플리케이션의 해시 합계를 제어해야 합니다.

하지만 이 개미집에서는 마이크로소프트가 메인이기 때문에 :-)

Windows를 업데이트하고 불법 복제된 Windows에서 제품을 정품 인증할 때 사람들이 로그인을 잃는 이유는 무엇이라고 생각합니까?