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

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

İki veya yirmi iki iş parçacığı senkron veya asenkron olabilir. Tek bir iş parçacığı hem senkron hem de asenkron işlemleri içerebilir. Nasıl olduğunu kendin belirttin. Paralel açılamıyor.

İyi evet. Tek bir iş parçacığında paralel hesaplamayı etkinleştiremezsiniz. Senkron ve asenkron işlemler bir veya daha fazla iş parçacığı üzerinde gerçekleştirilebilir. Yalnızca, tek iş parçacıklı eşzamansızlık esasen optimize edilmiş bir eylemler dizisidir ve kararlılık açısından çok iş parçacıklı eşzamansızlığa göre daha düşüktür. Bir iş parçacığı başarısız olursa, sistem çalışmaya devam eder ve durdurulan işlemin işlemleri, işlerliği korurken geri kalanına yayılabilir. Ve yalnızca bir iş parçacığı varsa - başarısız olursa sistem kapanır.)

Bir iş parçacığında sıfıra rastgele bölme ve bu kadar.
 

Örnek: 1 iş parçacığında senkronize bir işlev yürütülür, 2, 3 ve 4 iş parçacığından veri beklenir ve 5, 6, 7 ve 8 iş parçacığına dağıtılan işlevler, yürütme sonuçlarını bekler.

Hepimiz bir aradayız ve sonucu bekliyoruz. Ve şimdi - dikkat: ya senkron işlev iş parçacığından gelen verileri beklerse? Ve Allah korusun, bu veriler sonucuna mı bağlı?

 
Реter Konow :

Bir iş parçacığında sıfıra rastgele bölme ve bu kadar.

Hayır hepsi değil.

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

Örnek: 1 iş parçacığında senkronize bir işlev yürütülür, 2, 3 ve 4 iş parçacığından veri beklenir ve 5, 6, 7 ve 8 iş parçacığına dağıtılan işlevler, yürütme sonuçlarını bekler.

Hepimiz bir aradayız ve sonucu bekliyoruz. Ve şimdi - dikkat: ya senkron işlev iş parçacığından gelen verileri beklerse? Ve Allah korusun, bu veriler sonucuna mı bağlı?

Tamam, kendim cevaplayacağım:

Tuval yanıp sönmeye başlayacaktır.

 
Koldun Zloy :

MT geliştirme şirketinin bir temsilcisinin size daha önce verdiği yanıtı tercüme ediyorum:

MQL'den akışlar oluşturamazsınız. WinAPI ile bile.

Bunu ancak kendi DLL'nizi yazarak yapabilirsiniz.


Evet, MQL5\Include\WinAPI\processthreadsapi.mqh içinde sarmalayıcılar var
KOLU CreateThread(PVOID thread_attributes,ulong stack_size,PVOID start_address,PVOID parametresi,uint create_flags,uint &thread_id);

Ancak, MQL aracılığıyla iş parçacıklarıyla daha sonra ne yapmalı? Bu nedenle, DLL'ler yapmanın ve onlarla orada çalışmanın gerekli olduğunu yazdılar.


 

Alexey Tarabanov :

Örnek: 1 iş parçacığında senkronize bir işlev yürütülür, 2, 3 ve 4 iş parçacığından veri beklenir ve 5, 6, 7 ve 8 iş parçacığına dağıtılan işlevler, yürütme sonuçlarını bekler.

Hepimiz bir aradayız ve sonucu bekliyoruz. Ve şimdi - dikkat: ya senkron işlev iş parçacığından gelen verileri beklerse? Ve Allah korusun, bu veriler sonucuna mı bağlı?

Alexey Tarabanov :

Tamam, kendim cevaplayacağım:

Tuval yanıp sönmeye başlayacaktır.

Vurgulananın anlamsal bir anlamı yoktur.

Diğer iş parçacıklarına gelince, veriler hazır olana kadar bekleyecektir. Hiçbir şey titremeyecek.

Neden: