MQL'de asenkron ve çok iş parçacıklı programlama - sayfa 8

 
Dmitry Fedoseev :

Bazılarına eziyet eden işaretçi-başvuru farkı ile aynı alandan eşzamansızlık ve çoklu iş parçacığı arasındaki özel fark konusunda kafanız karışmış gibi görünüyor.

Eşzamansızlık ayrı bir iş parçacığı aracılığıyla gerçekleştirilir ve bu işlemin ne ile sağlandığı, bir işlemci veya başka bir cihaz o kadar önemli değildir. Ve bir sürecin yaratılması, paralel olarak var olduğu için onun eşzamansızlığını ima eder.

Asenkroni, EventLoop aracılığıyla aynı program yürütme iş parçacığında uygulanır, ancak EventLoop'un nasıl uygulanacağı zaten geliştiricilerin ayrıcalığıdır, nasıl uygulanacağı.
Mql'deki aynı standart işleyiciler, örneğin OnTimer kendi döngüsünde çalışır, bu bir tür EventLoop,
asenkron yöntemler için ayrı bir işleyiciyi bitirin veya oluşturun ve tüm görevler asenkron bir döngüde mükemmel bir şekilde yürütülecektir.

 
Roman :

Asenkroni, EventLoop aracılığıyla aynı program yürütme iş parçacığında uygulanır, ancak EventLoop'un nasıl uygulanacağı zaten geliştiricilerin ayrıcalığıdır, nasıl uygulanacağı.
Mql'deki aynı standart işleyiciler, örneğin OnTimer kendi döngüsünde çalışır, bu bir tür EventLoop,
asenkron yöntemler için ayrı bir işleyiciyi bitirin veya oluşturun ve tüm görevler asenkron bir döngüde mükemmel bir şekilde yürütülecektir.

Ve afedersiniz, EventLoop aracılığıyla eşzamansızlık nerede uygulanır?

Artık EventLoop'a benzer bir şeyi kendiniz yapabilirsiniz, burada terminal geliştiricilerine hiç ihtiyaç yoktur.

 
Dmitry Fedoseev :

Ve afedersiniz, EventLoop aracılığıyla eşzamansızlık nerede uygulanır?

Artık EventLoop'a benzer bir şeyi kendiniz yapabilirsiniz, burada terminal geliştiricilerine hiç ihtiyaç yoktur.

EventLoop asyncio'da uygulanmaktadır ve bana öyle geliyor ki aynı prensip diğer asenkron kitaplıklarda da kullanılıyor.
Evet, anladığım kadarıyla aynı WinAPI bile eşzamansızlık için olay ilkesini kullanıyor.
Artık tam teşekküllü eşzamansızlığı düzenli yollarla uygulamak mümkün olmayacak,
çünkü işleyici, örneğin aynı OnTimer, görevlerin yürütülmesini kontrol etmez, ancak döngüyü sırayla yürütür.
Yani, işleyici zaman uyumsuz görevleri gerçekleştirmek için bir mekanizmadan yoksundur.

 

Herkes kilitlenme kavramını google'da araştırsın!

MQL5'te, iş parçacığı eklemek test sistemini bozacak ve tüm aracı bulutu düşecek.

Bu sınırlamayı aşmak DLLki yardımıyla mümkündür. C#, C++, C, Python öğrenmek istemiyorsanız, bunlar sizin problemleriniz. Modern dünyada, bir programcının belirli bir görev için doğru aracı seçebilmesi için birkaç dil bilmesi gerekir.

1C dilini bilenler programcı olarak kabul edilmez. Aynısı MQL5 için de geçerlidir.

 
Roffild :

Herkes kilitlenme kavramını google'da araştırsın!

MQL5'te iş parçacığı eklemek, test sistemini bozacak ve tüm aracı bulutu çökecek.

Bu sınırlamayı aşmak DLLki yardımıyla mümkündür. C#, C++, C, Python öğrenmek istemiyorsanız, bunlar sizin problemleriniz. Modern dünyada, bir programcının belirli bir görev için doğru aracı seçebilmesi için birkaç dil bilmesi gerekir.

1C dilini bilenler programcı olarak kabul edilmez. Aynısı MQL5 için de geçerlidir.

Bir MQL programının çoklu okuması test sistemini bozarsa, hangi tarafa vidalanmış, DLL aracılığıyla veya düzenli olarak ne fark eder? Her durumda, test etme ve çoklu kullanım arasında seçim yapmanız gerekecektir. Ancak, MQL içinde seçim yapmak daha iyidir, çünkü bütünlük program için bir artıdır.
 
Roffild :

Herkes kilitlenme kavramını google'da araştırsın!

MQL5'te, iş parçacığı eklemek test sistemini bozacak ve tüm aracı bulutu düşecek.

Bu sınırlamayı aşmak DLLki yardımıyla mümkündür. C#, C++, C, Python öğrenmek istemiyorsanız, bunlar sizin problemleriniz. Modern dünyada, bir programcının belirli bir görev için doğru aracı seçebilmesi için birkaç dil bilmesi gerekir.

1C dilini bilenler programcı olarak kabul edilmez. Aynısı MQL5 için de geçerlidir.

Test yaparken sırayla tüm görevleri çözebilir ve zaman içinde belirli noktalarda sonucu verebilirsiniz (test cihazında bekleyebilirsiniz). Sadece mümkün olmakla kalmaz, aynı zamanda gerçeğe uygun olması da gereklidir.

1C programcılarının bu konuda ne düşündüğünü merak ediyorum. Başka birinin görüşüyle ilgileniyorlar mı?

 
Реter Konow :
Bir MQL programının çoklu okuması test sistemini bozarsa, hangi tarafa vidalanmış, DLL aracılığıyla veya düzenli olarak ne fark eder? Her durumda, test etme ve çoklu kullanım arasında seçim yapmanız gerekecektir. Ancak, MQL içinde seçim yapmak daha iyidir, çünkü bütünlük program için bir artıdır.
Genel olarak, çoklu iş parçacığına düzenli olarak ihtiyaç vardır. Test her zaman küçük bir program modülüyle çalışır - strateji ve diğer tüm program özellikleri geri kalır. Görselleştirme vb... Yani test sırasında sadece strateji modülünün bulunduğu thread'in çalışmasına izin verin. Test cihazında bazı normal işlevler ve olaylar devre dışı bırakılır, bu nedenle akışların devre dışı bırakılmasına izin verin.
 
Реter Konow :
Bir MQL programının çoklu okuması test sistemini bozarsa, hangi tarafa vidalanmış, bir DLL aracılığıyla veya varsayılan olarak ne fark eder? Her durumda, test etme ve çoklu kullanım arasında seçim yapmanız gerekecektir. Ancak, MQL içinde seçim yapmak daha iyidir, çünkü bütünlük program için bir artıdır.

Bir fark var. Bulutta DLL'ler yasaktır. Ve DLL'lerin kendileri başlangıçta devre dışı bırakılır. DLL'ler için izin dahil - bu nedenle güvenli kod yürütme sorumluluğunu reddedersiniz.

 
Roman :

EventLoop asyncio'da uygulanmaktadır ve bana öyle geliyor ki aynı prensip diğer asenkron kitaplıklarda da kullanılıyor.
...

Diğer eşzamansız kitaplıklar bu ilkeyi kullanmaz.

 
Dmitry Fedoseev :

Diğer eşzamansız kitaplıklar bu ilkeyi kullanmaz.

Bu sadece bir tahmindi, henüz nerede kullanıldığını kontrol etmedim.
Hemen, EventLoop'un hangi dillerde kullanıldığı Googled, Py, JS, Qt, muhtemelen diğerlerinde.
Anlamı, uygulandığı yerde değil, iplik kullanılmadan teknolojinin kendisindedir.
Öyleyse neden teknolojiyi ödünç alıp kendi EventLoop'unuzu mql'de uygulamıyorsunuz?