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

 
Алексей Тарабанов :

2개 또는 22개의 스레드는 동기식 또는 비동기식일 수 있습니다. 단일 스레드에는 동기 및 비동기 작업이 모두 포함될 수 있습니다. 당신 자신이 방법을 표시했습니다. 병렬로 켤 수 없습니다.

네, 그렇습니다. 단일 스레드에서 병렬 컴퓨팅 을 활성화할 수 없습니다. 동기 및 비동기 작업은 하나 이상의 스레드에서 수행할 수 있습니다. 단, 단일 스레드 비동기는 기본적으로 다중 스레드 비동기보다 안정성이 떨어지는 최적화된 작업 시퀀스입니다. 하나의 스레드가 실패하더라도 시스템은 계속 작동하고 중지된 프로세스의 작업은 운영성을 유지하면서 나머지 프로세스에 분산될 수 있습니다. 그리고 스레드가 하나만 있는 경우 시스템이 실패하면 kaput합니다.)

하나의 스레드에서 무작위로 0으로 나누면 됩니다.
 

예: 동기 함수는 1 스레드에서 실행되어 2, 3, 4 스레드의 데이터를 기다리고, 5, 6, 7, 8 스레드에 분산된 함수는 실행 결과를 기다리고 있습니다.

우리는 모두 함께 서서 결과를 기다립니다. 이제 - 주의: 동기 함수가 스레드의 데이터를 기다리면 어떻게 될까요? 그리고 신이시여, 이러한 데이터는 결과에 달려 있습니까?

 
Реter Konow :

하나의 스레드에서 무작위로 0으로 나누면 됩니다.

아니, 전부는 아니다.

 
Алексей Тарабанов :

예: 동기 함수는 1 스레드에서 실행되어 2, 3, 4 스레드의 데이터를 기다리고, 5, 6, 7, 8 스레드에 분산된 함수는 실행 결과를 기다리고 있습니다.

우리는 모두 함께 서서 결과를 기다립니다. 이제 - 주의: 동기 함수가 스레드의 데이터를 기다리면 어떻게 될까요? 그리고 이런 데이터는 결과에 따라 달라집니다.

좋아, 나는 스스로 대답할 것이다:

캔버스가 깜박이기 시작합니다.

 
Koldun Zloy :

MT 개발 회사의 담당자가 이미 답변한 내용을 번역하고 있습니다.

MQL에서 흐름을 만들 수 없습니다. WinAPI를 사용하더라도.

자신의 DLL을 작성해야만 이 작업을 수행할 수 있습니다.


예, MQL5\Include\WinAPI\processthreadsapi.mqh에 래퍼가 있습니다.
HANDLE CreateThread(PVOID thread_attributes, ulong stack_size, PVOID 시작 주소, PVOID 매개변수, uint creation_flags, uint &thread_id);

그러나 MQL을 통해 스레드로 다음에 무엇을 해야 할까요? 따라서 그들은 DLL을 만들고 거기에서 작업하는 것이 필요하다고 썼습니다.


 

알렉세이 타라바노프 :

예: 동기 함수는 1 스레드에서 실행되어 2, 3, 4 스레드의 데이터를 기다리고, 5, 6, 7, 8 스레드에 분산된 함수는 실행 결과를 기다리고 있습니다.

우리는 모두 함께 서서 결과를 기다립니다. 이제 - 주의: 동기 함수가 스레드의 데이터를 기다리면 어떻게 될까요? 그리고 신이시여, 이러한 데이터는 결과에 달려 있습니까?

알렉세이 타라바노프 :

좋아, 나는 스스로 대답할 것이다:

캔버스가 깜박이기 시작합니다.

강조 표시된 것은 의미상 의미가 없습니다.

다른 스레드의 경우 데이터가 준비될 때까지 대기합니다. 아무것도 깜박이지 않습니다.