MQL의 비동기 및 다중 스레드 프로그래밍 - 페이지 8

 
Dmitry Fedoseev :

일부를 괴롭히는 포인터 참조 차이와 같은 영역에서 비동기와 멀티스레딩의 특별한 차이점에 대해 혼란스러워하는 것 같습니다.

비동기는 별도의 스레드를 통해 구현되며 이 프로세스에 프로세서 또는 기타 장치가 제공되는 것은 그다지 중요하지 않습니다. 그리고 프로세스 생성은 병렬로 존재하기 때문에 비동기성을 의미합니다.

비동기는 EventLoop를 통해 동일한 프로그램 실행 스레드에서 구현되지만 EventLoop을 구현하는 방법, 구현하는 방법은 이미 개발자의 특권입니다.
mql의 동일한 표준 핸들러, 예를 들어 OnTimer는 자체 주기에서 작동합니다. 이것은 일종의 EventLoop입니다.
완료하거나 비동기식 메서드에 대한 별도의 핸들러를 생성하면 모든 작업이 비동기식 루프에서 완벽하게 실행됩니다.

 
Roman :

비동기는 EventLoop를 통해 동일한 프로그램 실행 스레드에서 구현되지만 EventLoop을 구현하는 방법, 구현하는 방법은 이미 개발자의 특권입니다.
mql의 동일한 표준 핸들러, 예를 들어 OnTimer는 자체 주기에서 작동합니다. 이것은 일종의 EventLoop입니다.
완료하거나 비동기식 메서드에 대한 별도의 핸들러를 생성하면 모든 작업이 비동기식 루프에서 완벽하게 실행됩니다.

실례합니다. EventLoop를 통해 비동기가 구현된 위치는 어디인가요?

이제 EventLoop와 유사한 작업을 직접 수행할 수 있습니다. 터미널 개발자는 여기에 전혀 필요하지 않습니다.

 
Dmitry Fedoseev :

실례합니다. EventLoop를 통해 비동기가 구현된 위치는 어디인가요?

이제 EventLoop와 유사한 작업을 직접 수행할 수 있습니다. 터미널 개발자는 여기에 전혀 필요하지 않습니다.

EventLoop은 asyncio로 구현되어 있는데 다른 비동기 라이브러리에서도 같은 원리를 사용하는 것 같습니다.
예, 내가 이해하는 동일한 WinAPI조차도 비동기를 위해 이벤트 원칙을 사용합니다.
이제 정규적인 수단으로 본격적인 비동기를 구현하는 것은 불가능할 것입니다.
예를 들어 동일한 OnTimer와 같은 핸들러는 작업 실행을 제어하지 않고 주기를 순차적으로 실행하기 때문입니다.
즉, 핸들러에는 비동기 작업을 수행하기 위한 메커니즘이 없습니다.

 

모두 교착 상태의 개념을 구글링하세요!

MQL5에서 스레드를 추가하면 테스트 시스템이 중단되고 전체 에이전트 클라우드가 무너집니다.

이 제한을 우회하는 것은 DLLki의 도움으로 가능합니다. C#, C++, C, Python을 배우고 싶지 않다면 이것이 문제입니다. 현대 사회에서 프로그래머는 특정 작업에 적합한 도구를 선택하기 위해 여러 언어를 알아야 합니다.

1C 언어를 아는 사람은 프로그래머로 간주되지 않습니다. MQL5도 마찬가지입니다.

 
Roffild :

모두 교착 상태의 개념을 구글링하세요!

MQL5에서 스레드를 추가하면 테스트 시스템이 중단되고 전체 에이전트 클라우드가 무너집니다.

이 제한을 우회하는 것은 DLLki의 도움으로 가능합니다. C#, C++, C, Python을 배우고 싶지 않다면 이것이 문제입니다. 현대 사회에서 프로그래머는 특정 작업에 적합한 도구를 선택하기 위해 여러 언어를 알아야 합니다.

1C 언어를 아는 사람은 프로그래머로 간주되지 않습니다. MQL5도 마찬가지입니다.

MQL 프로그램의 멀티스레딩이 테스트 시스템을 망가뜨리면 DLL을 통해 또는 정기적으로 어느 쪽을 망칠까요? 어쨌든 테스트와 멀티스레딩 중에서 선택해야 합니다. 그러나 무결성이 프로그램의 장점이기 때문에 MQL 내에서 선택하는 것이 좋습니다.
 
Roffild :

모두 교착 상태의 개념을 구글링하세요!

MQL5에서 스레드를 추가하면 테스트 시스템이 중단되고 전체 에이전트 클라우드가 무너집니다.

이 제한을 우회하는 것은 DLLki의 도움으로 가능합니다. C#, C++, C, Python을 배우고 싶지 않다면 이것이 문제입니다. 현대 사회에서 프로그래머는 특정 작업에 적합한 도구를 선택하기 위해 여러 언어를 알아야 합니다.

1C 언어를 아는 사람은 프로그래머로 간주되지 않습니다. MQL5도 마찬가지입니다.

테스트할 때 모든 작업을 차례로 해결하고 특정 시점에 결과를 제공할 수 있습니다(테스터에서 기다릴 수 있음). 가능할 뿐만 아니라 현실에 부합해야 합니다.

1C 프로그래머가 이에 대해 어떻게 생각하는지 궁금합니다. 그들은 다른 사람의 의견에 관심이 있습니까?

 
Реter Konow :
MQL 프로그램의 멀티스레딩이 테스트 시스템을 망가뜨리면 DLL을 통해 또는 정기적으로 어느 쪽을 망칠까요? 어쨌든 테스트와 멀티스레딩 중에서 선택해야 합니다. 그러나 무결성이 프로그램의 장점이기 때문에 MQL 내에서 선택하는 것이 좋습니다.
일반적으로 멀티스레딩은 정기적으로 필요합니다. 테스트는 항상 하나의 작은 프로그램 모듈(전략 및 기타 모든 프로그램 기능)로 작동합니다. 시각화 등등... 그래서 테스트하는 동안에는 전략 모듈이 위치한 스레드만 작동하도록 하십시오. 테스터에서는 일부 일반 기능 및 이벤트가 비활성화되어 있으므로 흐름을 비활성화합니다.
 
Реter Konow :
MQL 프로그램의 멀티스레딩이 테스트 시스템을 망가뜨리면 DLL을 통해 또는 기본적으로 어느 쪽이 문제가 되는가? 어쨌든 테스트와 멀티스레딩 중에서 선택해야 합니다. 그러나 무결성이 프로그램의 장점이기 때문에 MQL 내에서 선택하는 것이 좋습니다.

차이가 있습니다. DLL은 클라우드에서 금지됩니다. 그리고 DLL 자체는 처음에 비활성화됩니다. DLL에 대한 권한 포함 - 따라서 안전한 코드 실행에 대한 책임을 부인합니다.

 
Roman :

EventLoop은 asyncio로 구현되어 있는데 다른 비동기 라이브러리에서도 같은 원리를 사용하는 것 같습니다.
...

다른 비동기 라이브러리는 이 원칙을 사용하지 않습니다.

 
Dmitry Fedoseev :

다른 비동기 라이브러리는 이 원칙을 사용하지 않습니다.

이것은 추측일 뿐이며 아직 어디에 사용되는지 확인하지 못했습니다.
곧바로 Google에서 EventLoop가 사용되는 언어는 Py, JS, Qt이며 아마도 다른 언어일 수 있습니다.
그 의미는 어디에 적용하느냐가 아니라 쓰레드를 사용하지 않는 기술 자체에 있다.
그렇다면 기술을 차용하고 mql에서 자신의 EventLoop를 구현하지 않겠습니까?