멀티스레딩에 대한 추가 정보

 
친애하는 개발자 여러분, 멀티스레딩이라는 주제로 검색을 하다가 MQL5에서 스레드를 생성하고 관리하는 기능을 추가하지 않겠다고 말씀하신 문구를 발견했습니다. 이것은 1년 반 전에 말한 것입니다. 그 이후로 당신의 견해가 바뀌었는지 알고 싶습니다.
그리고 여전히 귀찮게 하고 싶지 않다면 사용자에게 직접 구현할 수 있는 기회를 줄 수 있습니까? 이를 위해서는 함수 포인터가 필요합니다. 이 기능을 추가하는 것은 어떻습니까? 저것들. GetPointer(myfunc)

그리고 어렵지 않다면 MQL5에서 멀티스레딩을 구현하지 않은 이유, 구체적으로 어떤 어려움을 보셨는지 설명해주세요. 아니면 그냥 원칙의 문제입니까?
2000년은 더 이상 마당에 있지 않으며 멀티 코어 프로세서는 오랫동안 모든 사람의 표준이 되었으며 코어 수는 매년 증가할 것임을 상기시키고 싶습니다. 이제 4, 몇 년 안에 이미 6-8 등 그리고 사용자가 실행 가능한 프로그램에 의해 프로세서를 정상적으로 사용하는 것을 허용하지 않습니다.
한 스레드에서만 작업을 비교하는 경우 MQL과 C++ 간의 일정한 속도 비교의 요점은 무엇입니까? 결국, 처리할 수 있는 여러 프로세서가 있는 경우 제정신의 C++ 프로그래머는 리소스 집약적인 작업을 한 스레드에 중단하지 않을 것입니다. 덕분에 성능이 여러 번 향상될 수 있습니다. 따라서 이러한 모든 테스트는 실생활과 거의 관련이 없습니다. 몇 년 안에 프로세서 코어가 10개로 늘어날 것이지만 여전히 단일 스레드 MQL 테스트를 자랑스러워할 것입니까?

OpenCL의 사용에 관해서는 이것은 이미 샤머니즘이며, 특히 텍스트 문자열을 통해 여기에 구현된 형식입니다. 저것들. 다른 곳에서 코드를 디버그한 다음 MQL5에 복사하여 붙여넣으세요... 이 얼마나 서커스입니까! 이 모든 것을 DLL에서 즉시 구현하고 가져오는 것이 더 쉽습니다. 더욱이 여러 언어로 프로그램을 작성하려는 사람은 거의 없습니다.
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 
meat :
친애하는 개발자 여러분, 멀티스레딩이라는 주제로 검색을 하다가 MQL5에서 스레드를 생성하고 관리하는 기능을 추가하지 않겠다고 말씀하신 문구를 발견했습니다. 이것은 1년 반 전에 말한 것입니다. 그 이후로 당신의 견해가 바뀌었는지 알고 싶습니다.
그리고 여전히 귀찮게 하고 싶지 않다면 사용자에게 직접 구현할 수 있는 기회를 줄 수 있습니까? 이를 위해서는 함수 포인터가 필요합니다. 이 기능을 추가하는 것은 어떻습니까? 저것들. GetPointer(myfunc)

그리고 어렵지 않다면 MQL5에서 멀티스레딩을 구현하지 않은 이유, 구체적으로 어떤 어려움을 보셨는지 설명해주세요. 아니면 그냥 원칙의 문제입니까?
2000년은 더 이상 마당에 있지 않으며 멀티 코어 프로세서는 오랫동안 모든 사람의 표준이 되었으며 코어 수는 매년 증가할 것임을 상기시키고 싶습니다. 이제 4, 몇 년 안에 이미 6-8 등 그리고 사용자가 실행 가능한 프로그램에 의해 프로세서를 정상적으로 사용하는 것을 허용하지 않습니다.
한 스레드에서만 작업을 비교하는 경우 MQL과 C++ 간의 일정한 속도 비교의 요점은 무엇입니까? 결국, 처리할 수 있는 여러 프로세서가 있을 때 정상적인 C++ 프로그래머는 한 스레드에서 리소스 집약적 작업을 중단하지 않을 것입니다. 덕분에 성능이 여러 번 향상될 수 있습니다. 따라서 이러한 모든 테스트는 실생활과 거의 관련이 없습니다. 몇 년 안에 프로세서 코어가 10개로 늘어날 것이지만 여전히 단일 스레드 MQL 테스트를 자랑스러워할 것입니까?

OpenCL의 사용에 관해서는 이것은 이미 샤머니즘이며, 특히 텍스트 문자열을 통해 여기에 구현된 형식입니다. 저것들. 다른 곳에서 코드를 디버그한 다음 MQL5에 복사하여 붙여넣으세요... 이 얼마나 서커스입니까! 이 모든 것을 DLL에서 즉시 구현하고 가져오는 것이 더 쉽습니다. 더욱이 여러 언어로 프로그램을 작성하려는 사람은 거의 없습니다.

MQL5의 멀티스레딩은 여전히 존재하지만 C++와 달리 차트라는 가상 실행 환경으로 구현된다.

각 차트는 별도의 스레드에서 작동하므로 동일한 사용자가 스레드 동기화, 데이터 액세스 및 스레드 통신 시 발생하는 기타 문제에 신경 쓰지 않도록 합니다.

크리벤코? 네, 하지만 (이미 언어의 복잡성에 대해 불평하는) 대중 사용자에게는 그게 전부입니다.

OpenCL은 완전히 별개의 문제입니다. 플랫폼의 개발 계획에도 없었습니다. 처음부터 고급 포럼 사용자들은 이 주제에 대해 개발자들의 관심을 끌었지만 공식 답변은 "아니요, 앞으로도 없을 것입니다."였습니다. 그러나 MQ의 경영진은 그들의 분노를 자비로 바꿨습니다( Ilyaz 덕분에 ).

Dll 정보: MQ는 잠재적으로 위험하다고 간주하므로, DLL 없이 가능한 모든 경우, 특히 공공 서비스의 경우 구현을 시도합니다. 그러나 동시에 프로그래머는 대중뿐만 아니라 도당을 위해 쓰기 때문에 전혀 금지하지 않습니다.

 

일반적으로 순수한 이론적 진술처럼 보입니다.

터미널에서 멀티스레딩과 프로세서를 완전히 사용하면 모든 것이 정상입니다. 터미널에서 실행 중인 스레드 수와 이러한 스레드 수가 시간이 지남에 따라 어떻게 변하는지 확인하십시오. 터미널의 다중 스레드 작동 원리는 반복적으로 설명되고 보여졌습니다. 예를 들어 지표, 기호 재계산, 차트 데이터 업로드, 모든 Expert Advisor 및 스크립트의 독립적인 작업을 위한 독립적인 흐름이 작동하는 방식.

어떤 것의 계산을 병렬화하기 위해서는 먼저 수학의 아주 작은 부분만이 병렬화될 수 있다는 것을 깨달아야 합니다.

멀티코어 테스터인 MQL5 Cloud Network와 OpenCL을 살펴보세요. 우리는 특히 클라우드 컴퓨팅에서 오랫동안 기관차보다 앞서 달려왔습니다. 지금 바로 테스터에서 MQL5 클라우드 네트워크 를 켜고 최대 14,000개의 CPU를 확보하세요.

OpenCL도 모르는 것 같습니다. OpenCL 컴파일러에 보낼 프로그램 코드를 소스 형식으로 표현하는 것은 일반적이고 표준적인 작업 방식입니다. 다른 OpenCL 핸들러(Ndivia, AMD, Intel 등)는 코드를 수신하고 자체적으로 재작업해야 합니다.

Статистика - MQL5 Cloud Network
Статистика - MQL5 Cloud Network
  • cloud.mql5.com
Произведенный объем работы, распределение агентов по странам, RAM, CPU и битности OS
 

MetaTrader 5에서 멀티스레딩이란 무엇입니까?

방금 테스트를 클릭했고 즉시 5,743개의 에이전트/CPU가 작동하고 6분 동안 옵티마이저에서 381,468개의 패스를 수행했습니다. 각 패스를 렌더링하는 데 1~2초가 소요되었습니다. 내 컴퓨터에서 6분이 아닌 8코어로 테스트를 실행했다면 800분에서 1600분(381468 / 8 = 47683초 = 794분)이 소요될 것입니다.

그리고 "시작" 버튼을 누르는 것 외에는 다른 작업을 수행할 필요가 없었습니다. 특정 스카이넷이 일어나 차트의 필요한 모든 기록을 독립적으로 동기화하고 전 세계 수천 대의 컴퓨터에 작업을 배포하고 일괄 처리했습니다.

현실에 오신 것을 환영합니다...

 

레나트,

MQL5 Expert Advisor 내에서 스레드 생성에 대한 질문입니다.

 
sergeev :

레나트,

MQL5 Expert Advisor 내에서 스레드 생성에 대한 질문입니다.

알아요.

나는 단지 응용 계산 언어 에 멀티스레딩이 없는 이유를 이해하지 못하는 사람이 멀티스레딩에 대해 이야기하지 않는 것이 낫다는 사실에 대해 쓰지 않았을 뿐입니다. 터미널의 모든 인프라 멀티스레딩은 당사에서 완전하고 효율적으로 구현합니다.

실제로 병렬 작업을 수행할 수 있는 곳에서는 실제 멀티스레딩이 필요합니다. 테스터입니다. 그리고 많은 사람들이 완료된 작업의 품질, 제어 및 양을 이해하지 못하는 방식으로 구현한 곳이 바로 이 곳입니다.

내 클라우드 예제는 작업 정교화의 품질과 수준에 대한 간단한 증거입니다.

 

예, Renat, 당신은 내 게시물을 부주의하게 읽었습니다. 이것은 MT5 멀티스레딩에 관한 것이 아니라 MQL5 멀티스레딩에 관한 것입니다. 우리는 실행 가능한 프로그램에서 이러한 스레드를 독립적으로 생성할 수 없습니다. 그리고 지표가 있는 새 차트를 프로그래밍 방식으로 여는 것은 해결책이 아니라 탬버린으로 춤을 추는 것입니다.

무엇보다 매스 유저를 감안하면 MQL5에 불필요한 것들을 너무 많이 쌓았다는 게 가장 놀라운 사실이다. 결국, 내가 이해하는 한, 당신은 유능한 프로그래머가 아니라 주로 인형에 집중합니다. 따라서 많은 제한 사항, 메모리를 직접 사용할 수 없는 등의 문제가 있습니다. 예를 들어 인형에게 필요한 수업은 무엇입니까?

인형용이 아닌 제품을 포지셔닝하고 있다면 숙련된 프로그래머에게 시스템 리소스를 효율적으로 사용할 수 있는 기회를 제공할 수 없는 이유는 무엇입니까?

결국, 멀티스레딩의 부족은 어떤 클래스로도 보상될 수 없습니다. 프로그램이 아무리 우아해 보여도 시스템 리소스를 비효율적으로 사용하면 이 모든 것이 무의미합니다. 분명히 혁신을 추구하면서 MQL 언어가 프로그래밍을 위한 프로그래밍이 아니라 주로 거래 및 분석 프로그램을 작성하기 위한 것임을 잊어버렸을 것입니다. 따라서 코드 작성 속도가 아니라 프로그램의 속도와 효율성이 우선되어야 합니다. 결국, 선험적으로 많은 양의 데이터와 함께 작동해야 합니다.

대부분의 사용자에게 MQL4의 기능은 충분했다고 생각합니다. 완전한 행복을 위해 구조, 변수에 대한 포인터 및 함수에 대한 포인터(글쎄, 또는 콜백 함수에 대한 내장 지원)에 대한 지원만 누락되었습니다. 그리고 그게 다야. 이 무기고가 있으면 매우 효율적으로 작동하는 프로그램을 만들고 필요한 수의 스레드, 콜백 등을 직접 만들 수 있습니다.

 

고기, 화를 내지 말고 유치원 문제 에 대한 이해 수준.

꼼꼼히 다 읽어보지만 본격적인 교육 프로그램을 진행할 기회가 없습니다. 저는 MQL/MQL2/MQL4/MQL5 언어에 대해 11년 동안 작업한 경험이 있습니다.

 
meat :

이것은 MT5 멀티스레딩에 관한 것이 아니라 MQL5 멀티스레딩에 관한 것입니다. 우리는 실행 가능한 프로그램에서 이러한 스레드를 독립적으로 생성할 수 없습니다. 그리고 지표가 있는 새 차트를 프로그래밍 방식으로 여는 것은 해결책이 아니라 탬버린으로 춤을 추는 것입니다.

WinAPI가 도움이 됩니다. MQL5에서는 멀티스레딩이 필요하지 않습니다. 저것들. 전혀 필요하지 않습니다.
 
meat :


무엇보다 매스 유저를 감안하면 MQL5에 불필요한 것들을 너무 많이 쌓았다는 게 가장 놀라운 사실이다.

단일 사용자를 취하면 불필요한 것이 많이 있을 수 있습니다. 그리고 시야를 넓히기 시작하고 추가 기회가 필요하면 반대로 이미 무언가가 있지만 무언가가 빠져 있다는 것이 밝혀졌습니다.

MQL5는 아직 개발 중입니다. 점차적으로 새로운 것이 추가됩니다. 물론 자신만의 이벤트를 생성하는 것이 불가능하다는 단점도 있지만 예외 핸들러와 멀티스레딩은 없습니다. 이 모든 것이 언젠가는 나타나기를 바랍니다. 그러나 이 모든 것이 내일 구현될지는 의문입니다.

정말 원한다면 테스트 에이전트도 OpenCL에서 멀티스레딩을 사용합니다. 그다지 편리하지는 않지만 여전히 존재하며 작업을 병렬화 할 수 있습니다.

 
Renat :

고기, 화를 내지 말고 유치원 문제 에 대한 이해 수준.

기업 표준을 말씀하시는 건가요?

질문을하면 대답은 표면에 있지 않습니다 ...