이 예는 Windows에서 장치 컨텍스트 및 할당된 리소스를 캡처하는 일반적인 원칙에 관한 것입니다. 독립 스레드를 프로그래밍할 때 개발자는 OS에서 요구할 때 장치 컨텍스트와 리소스를 해제하도록 보장해야 합니다. 개발자가 저수준 명령을 사용하는 경우 그는 다음을 수행해야 합니다. 자신이 사용한 모든 리소스를 해제하십시오 ... 여기에서 일반적으로 다시 내가 쓴 순간까지 - 구글 정보 "Hello World"를 사용하여 한 번 작성 하십시오 https://www.mql5.com/en/forum/318593/ page5#comment_12572558 그러면 많은 것을 이해하게 될 것입니다. 작업의 99%가 시스템 프로그래머에 의해 수행되었음을 이해하게 될 것입니다.
저것들. MQL 환경에서 작업 - 이것은 Metaquote 프로그래머에 의해 수행되었습니다 - MQL 프로그램의 부적절한 작동의 경우 터미널의 안정적인 작동을 보장
멀티스레딩 - 작업이 여러 스레드에서 실행됩니다. 그것들은 하나의 프로세서에서 작동할 수 있으며, 모두 동일하게 멀티스레딩이 있고 프로세서 시간 할당량이 끝나면 프로세서 간에 전환됩니다. 공유 리소스에 액세스하려면 동기화가 필요합니다. 교착 상태, 경쟁 조건, 메모리 해제 오류 및 기타 "놀라움"으로 가득 차 있습니다.
비동기 - 일반적으로 다른 장치(네트워크 장비, 저장 장치, 주변 장치 등)에서 기능의 비차단 실행(즉, 메서드가 종료된 직후 제어 반환). 예를 들어 고성능 다중 사용자 서버를 작성할 수 있습니다. 클라이언트 연결을 처리하기 위해 하나의 스레드와 상태 머신만 사용합니다. 그것은 모두 이 서버의 목적에 달려 있습니다.
귀하의 경우 WinAPI를 사용하여 많은 수의 연결을 생성해야 하며 예를 들어 타이머 스레드를 유지하지 않도록 시간 초과가 있는 WaitForMultipleObjects를 통해 이러한 연결의 상태를 확인할 수 있습니다.
추신. 이론적으로 IOCompletionPort를 사용할 수 있지만 더 많은 지식과 명확한 설계가 필요합니다.
테마가 무엇을 위해 만들어졌다고 생각하시나요? 네이티브 방식으로 비동기 코드를 작성하는 방법을 알려주고 문서에 표시합니다. 요청을 비동기적으로 보내는 것 외에도 콜백 기능이 있는 위치, 제어 EventLoop이 있는 위치, Wait의 위치 등을 표시합니다. 사용자를 위한 이 기능이 없고 이것은 도크에 없기 때문에 답변을 드릴 수 없을 것이라고 확신합니다. 그게 다야, 이야기할 것이 없습니다. 여기 Andrey Pogoreltsev 주제에서 의사 소통의 주제를 이해하는 한 사람입니다.
네이티브 방식으로 비동기 코드를 작성하고 문서에 표시하는 방법을 알려주십시오. 요청을 비동기적으로 보내는 것 외에도 콜백 기능이 있는 위치, 제어 EventLoop이 있는 위치, Wait의 위치 등을 표시합니다. 사용자를 위한 이 기능이 없고 이것은 도크에 없기 때문에 답변을 드릴 수 없을 것이라고 확신합니다. 그게 다야, 이야기할 것이 없습니다. 여기 Andrey Pogoreltsev 주제에서 의사 소통의 주제를 이해하는 한 사람입니다.
멀티스레딩은 https://www.mql5.com/en/docs/runtime/running 입니다. 우리는 작업을 병렬화하고 여러 차트를 열고(불행히도 아직 서비스의 기능을 사용하려고 시도하지 않았습니다. 어쩌면 더 쉬울까요? ) 별도의 스레드에서 작업하는 전문가를 매달아 해결합니다. 동기화 및 데이터 교환 문제(작업)
나는 TS에게 5 번 물었습니다 - 거래 터미널이 왜 그것을 필요로합니까 ... 그는 특정 작업이나 목표가 없기 때문에 모릅니다
나는 거래 터미널의 작업에 일반적이지 않은 클라이언트-서버 응용 프로그램에서만 응용 프로그램을 봅니다. 누군가가 서버에 통계를 보내는 것이 편리할까요? - 일반적으로 기성품 예제(기사)가 이미 작성되었습니다. https://www.mql5.com/en/articles/5337
소스 코드를 읽을 수 있고 기사의 품질이 우수합니다. 여러 스레드에서 병렬 계산을 수행하도록 소스 코드를 수정할 수 있습니다. )))
이 예는 Windows에서 장치 컨텍스트 및 할당된 리소스를 캡처하는 일반적인 원칙에 관한 것입니다. 독립 스레드를 프로그래밍할 때 개발자는 OS에서 요구할 때 장치 컨텍스트와 리소스를 해제하도록 보장해야 합니다. 개발자가 저수준 명령을 사용하는 경우 그는 다음을 수행해야 합니다. 자신이 사용한 모든 리소스를 해제하십시오 ... 여기에서 일반적으로 다시 내가 쓴 순간까지 - 구글 정보 "Hello World"를 사용하여 한 번 작성 하십시오 https://www.mql5.com/en/forum/318593/ page5#comment_12572558 그러면 많은 것을 이해하게 될 것입니다. 작업의 99%가 시스템 프로그래머에 의해 수행되었음을 이해하게 될 것입니다.
저것들. MQL 환경에서 작업 - 이것은 Metaquote 프로그래머에 의해 수행되었습니다 - MQL 프로그램의 부적절한 작동의 경우 터미널의 안정적인 작동을 보장
글쎄, 나는 논쟁하지 않는다, 확신한다. 스트림에 대한 적절한 독립적인 작업은 독학 코더의 능력을 넘어 심각한 오류로 이어질 수 있습니다. 성냥은 아이들의 장난감이 아닙니다. 그러나 어떻게든 하나의 프로그램 내에서 멀티스레딩에 도달해야 합니다.
결국 여기에는 간단한 논리로 충분합니다. 서비스를 순차적으로 실행해도 오류가 발생하지 않으며 각 서비스는 자체 스레드에서 실행됩니다. 이는 메커니즘이 이미 설정 및 디버깅되었음을 의미합니다. 괜찮은. 우리는 한 걸음 더 나아가야 합니다. 특별 섹션의 Expert Advisor 코드에 이러한 서비스를 작성하십시오. 모듈. 각 모듈은 동일한 서비스입니다. 그런 다음 이러한 모듈을 순차적으로 컴파일하고 동시에 실행합니다. 모두.
기본적으로 아무것도 바뀌지 않습니다. 고문의 코드 안에는 서비스만 작성됩니다. 컴파일 및 작동도 됩니다. 차트에서 EA가 제거되면 소멸됩니다. 이것이 Expert Advisor의 멀티스레딩을 얻는 방법입니다.
훨씬 더 쉬울 수 있습니다. Expert Advisor 자체는 별도로 작성된 필요한 서비스를 로드합니다. 차트에서 제거되면 중지합니다. 어드바이저에서 서비스 시작을 추가하기만 하면 됩니다. 그리고 스레드 간의 내부 상호 작용은 프로그래머의 작업입니다. 리소스로 해결되었습니다.
정말 모든 것이 위험합니까? 메모리 해제 오류...
이 예는 Windows에서 장치 컨텍스트 및 할당된 리소스를 캡처하는 일반적인 원칙에 관한 것입니다. 독립 스레드를 프로그래밍할 때 개발자는 OS에서 요구할 때 장치 컨텍스트와 리소스를 해제하도록 보장해야 합니다. 개발자가 저수준 명령을 사용하는 경우 그는 다음을 수행해야 합니다. 자신이 사용한 모든 리소스를 해제하십시오 ... 여기에서 일반적으로 다시 내가 쓴 순간까지 - 구글 정보 "Hello World"를 사용하여 한 번 작성 하십시오 https://www.mql5.com/en/forum/318593/ page5#comment_12572558 그러면 많은 것을 이해하게 될 것입니다. 작업의 99%가 시스템 프로그래머에 의해 수행되었음을 이해하게 될 것입니다.
저것들. MQL 환경에서 작업 - 이것은 Metaquote 프로그래머에 의해 수행되었습니다 - MQL 프로그램의 부적절한 작동의 경우 터미널의 안정적인 작동을 보장
멀티스레딩 - 작업이 여러 스레드에서 실행됩니다. 그것들은 하나의 프로세서에서 작동할 수 있으며, 모두 동일하게 멀티스레딩이 있고 프로세서 시간 할당량이 끝나면 프로세서 간에 전환됩니다. 공유 리소스에 액세스하려면 동기화가 필요합니다. 교착 상태, 경쟁 조건, 메모리 해제 오류 및 기타 "놀라움"으로 가득 차 있습니다.
비동기 - 일반적으로 다른 장치(네트워크 장비, 저장 장치, 주변 장치 등)에서 기능의 비차단 실행(즉, 메서드가 종료된 직후 제어 반환). 예를 들어 고성능 다중 사용자 서버를 작성할 수 있습니다. 클라이언트 연결을 처리하기 위해 하나의 스레드와 상태 머신만 사용합니다. 그것은 모두 이 서버의 목적에 달려 있습니다.
귀하의 경우 WinAPI를 사용하여 많은 수의 연결을 생성해야 하며 예를 들어 타이머 스레드를 유지하지 않도록 시간 초과가 있는 WaitForMultipleObjects를 통해 이러한 연결의 상태를 확인할 수 있습니다.
추신. 이론적으로 IOCompletionPort를 사용할 수 있지만 더 많은 지식과 명확한 설계가 필요합니다.음, 음... 서로를 찾았습니다.
유익한 답변 감사합니다 :)
글쎄, 설명하고 무엇을, 어디에 있는지 말해 봅시다.
그리고 정기적인 방법으로 Eventloop 를 사용하여 비동기 코드를 작성하는 방법은 무엇입니까?
모든 것이 문서에 있습니다.
우선, 그것을 읽고 무언가를 작성해 보십시오.
작동하지 않으면 포럼에 요청할 수 있습니다.
지금은 할 얘기가 없습니다.
모든 것이 문서에 있습니다.
우선, 그것을 읽고 무언가를 작성해 보십시오.
작동하지 않으면 포럼에 요청할 수 있습니다.
지금은 할 얘기가 없습니다.
테마가 무엇을 위해 만들어졌다고 생각하시나요?
네이티브 방식으로 비동기 코드를 작성하는 방법을 알려주고 문서에 표시합니다.
요청을 비동기적으로 보내는 것 외에도 콜백 기능이 있는 위치, 제어 EventLoop이 있는 위치, Wait의 위치 등을 표시합니다.
사용자를 위한 이 기능이 없고 이것은 도크에 없기 때문에 답변을 드릴 수 없을 것이라고 확신합니다.
그게 다야, 이야기할 것이 없습니다. 여기 Andrey Pogoreltsev 주제에서 의사 소통의 주제를 이해하는 한 사람입니다.
로만 , 2019.07.27 09:30
테마가 무엇을 위해 만들어졌다고 생각하시나요?
멀티스레딩에 대해 질문하셨습니다. 그녀는 아니다.
하지만 지금 당장 걱정할 필요는 없습니다.
로만 , 2019.07.27 09:30
네이티브 방식으로 비동기 코드를 작성하고 문서에 표시하는 방법을 알려주십시오.
요청을 비동기적으로 보내는 것 외에도 콜백 기능이 있는 위치, 제어 EventLoop이 있는 위치, Wait의 위치 등을 표시합니다.
사용자를 위한 이 기능이 없고 이것은 도크에 없기 때문에 답변을 드릴 수 없을 것이라고 확신합니다.
그게 다야, 이야기할 것이 없습니다. 여기 Andrey Pogoreltsev 주제에서 의사 소통의 주제를 이해하는 한 사람입니다.
이 모든 것을 보여드릴 수 있습니다. 의미는 어떻습니까?
필요했다면 스스로 찾았을 것입니다.
멀티스레딩에 대해 질문하셨습니다. 그녀는 아니다.
멀티스레딩은 https://www.mql5.com/en/docs/runtime/running 입니다. 우리는 작업을 병렬화하고 여러 차트를 열고(불행히도 아직 서비스의 기능을 사용하려고 시도하지 않았습니다. 어쩌면 더 쉬울까요? ) 별도의 스레드에서 작업하는 전문가를 매달아 해결합니다. 동기화 및 데이터 교환 문제(작업)
나는 TS에게 5 번 물었습니다 - 거래 터미널이 왜 그것을 필요로합니까 ... 그는 특정 작업이나 목표가 없기 때문에 모릅니다
나는 거래 터미널의 작업에 일반적이지 않은 클라이언트-서버 응용 프로그램에서만 응용 프로그램을 봅니다. 누군가가 서버에 통계를 보내는 것이 편리할까요? - 일반적으로 기성품 예제(기사)가 이미 작성되었습니다. https://www.mql5.com/en/articles/5337
소스 코드를 읽을 수 있고 기사의 품질이 우수합니다. 여러 스레드에서 병렬 계산을 수행하도록 소스 코드를 수정할 수 있습니다. )))
이 예는 Windows에서 장치 컨텍스트 및 할당된 리소스를 캡처하는 일반적인 원칙에 관한 것입니다. 독립 스레드를 프로그래밍할 때 개발자는 OS에서 요구할 때 장치 컨텍스트와 리소스를 해제하도록 보장해야 합니다. 개발자가 저수준 명령을 사용하는 경우 그는 다음을 수행해야 합니다. 자신이 사용한 모든 리소스를 해제하십시오 ... 여기에서 일반적으로 다시 내가 쓴 순간까지 - 구글 정보 "Hello World"를 사용하여 한 번 작성 하십시오 https://www.mql5.com/en/forum/318593/ page5#comment_12572558 그러면 많은 것을 이해하게 될 것입니다. 작업의 99%가 시스템 프로그래머에 의해 수행되었음을 이해하게 될 것입니다.
저것들. MQL 환경에서 작업 - 이것은 Metaquote 프로그래머에 의해 수행되었습니다 - MQL 프로그램의 부적절한 작동의 경우 터미널의 안정적인 작동을 보장
글쎄, 나는 논쟁하지 않는다, 확신한다. 스트림에 대한 적절한 독립적인 작업은 독학 코더의 능력을 넘어 심각한 오류로 이어질 수 있습니다. 성냥은 아이들의 장난감이 아닙니다. 그러나 어떻게든 하나의 프로그램 내에서 멀티스레딩에 도달해야 합니다.
결국 여기에는 간단한 논리로 충분합니다. 서비스를 순차적으로 실행해도 오류가 발생하지 않으며 각 서비스는 자체 스레드에서 실행됩니다. 이는 메커니즘이 이미 설정 및 디버깅되었음을 의미합니다. 괜찮은. 우리는 한 걸음 더 나아가야 합니다. 특별 섹션의 Expert Advisor 코드에 이러한 서비스를 작성하십시오. 모듈. 각 모듈은 동일한 서비스입니다. 그런 다음 이러한 모듈을 순차적으로 컴파일하고 동시에 실행합니다. 모두.
기본적으로 아무것도 바뀌지 않습니다. 고문의 코드 안에는 서비스만 작성됩니다. 컴파일 및 작동도 됩니다. 차트에서 EA가 제거되면 소멸됩니다. 이것이 Expert Advisor의 멀티스레딩을 얻는 방법입니다.