Canvas üzerinde bir kitle kaynaklı proje yapma - sayfa 34

 
Roman :

Anlamını anladım, uygulama ayrı, GUI ayrı.
Ancak GUI'deki çıktı verilerinin işlenmesi hala eşzamanlı olarak gerçekleştirilir.
Yani, örneğin uygulama GUI'ye 10.000 öğe gönderir ve GUI tüm bu öğeleri sırayla işler.
Sorun bu. GUI'de gelen öğelerin işlenmesini ve çıktılarını paralel hale getirmek gereklidir. Temel, metin, simge.
Ayrıca, hücre başına üç döngü gerçekleştirilir.

Pekala. Ancak mevcut koşullarda işlemeyi paralel hale getirmek elverişsizdir. Daha fazla danışman veya hizmet bağlamanız gerekiyor. Sonunda hantal ve bozuk bir uygulama ile karşılaşacaksınız.(

Grafik nesnelerine dayalı bir yol var. Derinlemesine girmedim, ancak birden çok iş parçacığı oluşturmaya yardımcı olabilir. Şablonlarla ilgili bir şey ...

 
Roman :

Anlamını anladım, uygulama ayrı, GUI ayrı.
Ancak GUI'deki çıktı verilerinin işlenmesi hala eşzamanlı olarak gerçekleştirilir.
Yani, örneğin uygulama GUI'ye 10.000 öğe gönderir ve GUI tüm bu öğeleri sırayla işler.
Sorun bu. GUI'de gelen öğelerin işlenmesini ve çıktılarını paralel hale getirmek gereklidir. Temel, metin, simge.
Ayrıca, hücre başına üç döngü gerçekleştirilir.

Bunun işe yaraması pek olası değil. Windows bile arayüzü tek bir iş parçacığında işler. Aksi takdirde, pencerelerin ve kontrollerin önceliği belirlenmeyecektir. Yalnızca GUI'nin kendisi ve çeşitli verilerin işlenmesi iş parçacıklarına ayrılabilir. Fiili olarak, kontrollerdeki verilerin değiştirilmesine bile başka bir iş parçacığından izin verilmez. Diyalog her zaman eksiksiz olmalıdır, bu nedenle herhangi bir diyalogun herhangi bir çizimi ve tepkisi kesinlikle tek bir iş parçacığında gerçekleşir, yani her şey eşzamanlı olarak gerçekleşir.

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

MT'deki herhangi bir işlem kesinlikle eşzamanlı olarak gerçekleştirilir ve geliştiriciler uygulamaya iş parçacığı ekleyene kadar bu gerçekten değiştirilemez.

Geliştiricilerin veritabanlarıyla, python ile, keskin ile çalışma açısından MT'nin işlevselliğini genişletmeye çalışması oldukça şaşırtıcı...
Harika.

sürprize katılıyorum.
Tek çıkış yolu, uygulamalarınıza asenkron işlevli dll göndermektir.
Ancak bu tür uygulamalar, dll yasağı nedeniyle kod tabanına bile yerleştirilemez.

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

Bunun işe yaraması pek olası değil. Windows bile arayüzü tek bir iş parçacığında işler. Aksi takdirde, pencerelerin ve kontrollerin önceliği belirlenmeyecektir. Yalnızca GUI'nin kendisi ve çeşitli verilerin işlenmesi iş parçacıklarına ayrılabilir. Fiili olarak, kontrollerdeki verilerin değiştirilmesine bile başka bir iş parçacığından izin verilmez. Diyalog her zaman eksiksiz olmalıdır, bu nedenle herhangi bir diyalogun herhangi bir çizimi ve tepkisi kesinlikle tek bir iş parçacığında gerçekleşir, yani her şey eşzamanlı olarak gerçekleşir.

Ve bana öyle geliyor ki, her şey yoluna girecek, sadece asenkron verilerin işlenmesinin önceliği hakkında önceden düşünmeniz gerekiyor.
Yani, senkronize olanla asenkron bir işleme şeması oluşturmak için.

 
Roman :

sürprize katılıyorum.
Tek çıkış yolu, uygulamalarınıza asenkron işlevli dll göndermektir.
Ancak bu tür uygulamalar, dll yasağı nedeniyle kod tabanına bile yerleştirilemez.

Aslında, henüz GUI olaylarının işlenmesini paralelleştirmeye gerçek bir ihtiyaç yoktur. 1000 hücrelik tablolar MT4'te bile nispeten hızlı çalışıyorsa, diğer olayların hızı fazlasıyla yeterlidir. Benim pratiğimde hiçbir engelleme yoktur. Süper hızlı animasyon gerekiyorsa, OpenCL bağlanabilir. MT5, olağan GUI'yi mükemmel şekilde çeker. Sorun yok. Tuvali yeniden çizerken dikkatli olmanız gerektiğini gösterdim.

EA'nın kendisi ağır hesaplamalar içeriyorsa, GUI'ye veri çıkışı sıklığı azaltılabilir. Büyük pencerenin yeniden çizilmesi 100 ms'ye kadar sürebilir, ancak genellikle çok daha kısa sürer. Bu nedenle, GUI'de 100 ms'lik bir gecikme ancak ÇOK ağır EA hesaplamalarında fark edilebilir.

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

sürprize katılıyorum.
Tek çıkış yolu, uygulamalarınıza asenkron işlevli dll göndermektir.
Ancak bu tür uygulamalar, dll yasağı nedeniyle kod tabanına bile yerleştirilemez.

DLL düzeyinde pek çok şey yapabilirsiniz.

MT'nin amaçlanmadığı tek şey bu ve + orada yapmanız gerekebilir :-)

dll kontrol edilemez, bu yüzden piyasada yok. Ve kod tabanında, bu arada, dll'ler karşımıza çıkıyor. Belki şimdi bir tür korkuyla yasaklanmıştır

PS Bu arada, merak uyandıran bir soru - bir DLL, bir geliştirici anahtarıyla imzalanabilir. Teorik olarak, piyasada ve kod tabanında bu tür DLL'lere izin vermek mümkündür, ancak bu, Microsoft altyapısına bir bağlantı verecektir. Buradaki kim, Visual C için böyle bir lisans almaya hazır mı?
 
Roman :

sürprize katılıyorum.
Tek çıkış yolu, uygulamalarınıza asenkron işlevli dll göndermektir.
Ancak bu tür uygulamalar, dll yasağı nedeniyle kod tabanına bile yerleştirilemez.

Evet, asıl sorun bu! Aynı market dll kullanımını yasaklıyor, bu yüzden tekerleği yeniden icat etmeniz gerekiyor. Biri GUI'lerin gerekli olmadığını düşünürse, ancak her durumda, tek bir iş parçacığında karmaşık uzun vadeli hesaplamalar yapamazsınız, her şey askıda kalır! Yani piyasada yasak olan dll'de bu işlem yapılmalı...

Vb. Bu nedenle her şeyin mql yöntemleri kullanılarak çizilmesi ve çözülmesi gerekir.

Aslında, GUI'yi ve mantığı iş parçacıklarına bölmek için, elbette, şimdi zaten yapabilirsiniz. Adamlar paralellik konusunu zaten tartıştılar https://www.mql5.com/en/forum/288985/page5#comment_14722396.

Sonuç olarak, Windows'ta olduğu gibi formun kendisini ana iş parçacığında bırakabilir ve ek hesaplamaları "arka plan" yürütmesine aktarabilirsiniz. Windows, Linux ve Android böyle çalışır.

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

DLL düzeyinde pek çok şey yapabilirsiniz.

MT'nin amaçlanmadığı tek şey bu ve + orada yapmanız gerekebilir :-)

dll kontrol edilemez, bu yüzden piyasada yok. Ve kod tabanında bu arada, dll'ler karşımıza çıkıyor. Belki şimdi bir tür korkuyla yasaklanmıştır

PS Bu arada, merak uyandıran bir soru - bir DLL, bir geliştirici anahtarıyla imzalanabilir. Teorik olarak, piyasada ve kod tabanında bu tür DLL'lere izin vermek mümkündür, ancak bu, Microsoft altyapısına bir bağlantı verecektir. Buradaki iş parçacığı Visual C için böyle bir lisans almaya hazır mı?

Evet, dll'leri kontrol etmek imkansızdır, ancak aynı Windows kitaplıklarına izin verilebilir...

Neden ileri gidelim: standart kitaplığın bir parçası olarak bile winAPI'ye erişim için işlevler var! Peki ya anlamı? Ne de olsa, her şey piyasaya erken konulamaz ....

Tamam, bu konuşmalarla bir başka sele daha düştük.

 
Maxim Kuznetsov :

DLL düzeyinde pek çok şey yapabilirsiniz.

MT'nin amaçlanmadığı tek şey bu ve + orada yapmanız gerekebilir :-)

dll kontrol edilemez, bu yüzden piyasada yok. Ve kod tabanında, bu arada, dll'ler karşımıza çıkıyor. Belki şimdi bir tür korkuyla yasaklanmıştır

PS Bu arada, merak uyandıran bir soru - bir DLL, bir geliştirici anahtarıyla imzalanabilir. Teoride, piyasada ve kod tabanında bu tür DLL'lere izin vermek mümkündür, ancak bu, Microsoft altyapısına bir bağlantı verecektir. Buradaki kim, Visual C için böyle bir lisans almaya hazır mı?

Peki Microsoft'un altyapısına demir atmak için ne gerekir?
Bence kesinlikle herhangi bir anahtarla bir dll imzalayabilirsiniz, asıl mesele bu anahtarın bir şekilde MQ tarafından kontrol edilmesidir.
Bu anahtarların MQ tarafından verilmesi ve uygulamanın karma toplamını kontrol etmesi gerektiği sonucu çıkar.

 
Roman :

Peki Microsoft'un altyapısına demir atmak için ne gerekir?
Bence kesinlikle herhangi bir anahtarla bir dll imzalayabilirsiniz, asıl mesele bu anahtarın bir şekilde MQ tarafından kontrol edilmesidir.
Bu anahtarların MQ tarafından verilmesi ve uygulamanın karma toplamını kontrol etmesi gerektiği sonucu çıkar.

ama bu karınca yuvasında en önemli olan microsoft olduğu için :-)

Windows'u güncellerken ve korsan Windows'ta ürünleri etkinleştirirken insanların neden oturum açma bilgilerini kaybettiğini düşünüyorsunuz?