Canvasでクラウドソーシングのプロジェクトを作る - ページ 34

 
Roman:

アプリケーションは別、GUIも別。
しかし、GUIで差し引かれたデータの処理は、とにかく同期的に行われる。
例えば、アプリケーションがGUIに10000個のエレメントを送り、GUIがこれら全てのエレメントを順次処理する場合です。
これが問題なのです。 GUIでは、入力された要素の処理とその出力を並列化する必要があります。ベース、テキスト、アイコンです。
さらに言えば、1つのセルにつき3つのサイクルがあります。

そうなんです。しかし、現状ではパラレル処理では不便です。もっとEAやサービスをつなげる必要がある。面倒でバラバラな実装になってしまう。

オブジェクトチャートに基づく方法があります。私はまだ手を出していませんが、いくつものスレッドを作成するのに役立ちます。テンプレートと関係があるのか・・・。

 
Roman:

アプリケーションは別、GUIは別というのは分かる。
しかし、GUIでの出力データの処理は、とにかく同期して行われます。
そのため、例えばアプリケーションが10000個の要素をGUIに送り、GUIがこれら全ての要素を順次処理する。
これが問題なのです。GUIでは、入力された要素の処理とその出力を並列化する必要があります。ベース、テキスト、アイコンです。
1つのセルに3つのサイクルがあるので、なおさらです。

これではうまくいくはずがありません。ウインダでもインターフェイスはシングルスレッドで処理します。そうでない場合は、ウィンドウやコントロールが優先されることはありません。スレッドに分けられるのは、GUI本体と各種データの処理だけです。事実上、コントロールの データ変更も他のスレッドからはできない。ダイアログは常に首尾一貫していなければならないので、ダイアログのレンダリングとリアクションは厳密に1つのスレッドで、つまりすべてが同期的に行われます。

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

MTの操作はすべて厳密に同期であり、開発者がアプリケーションにスレッドを追加しない限り、これを実際に変更することはできない。

データベースとの連携、Pythonとの連携、Sharpとの連携など、MTの機能を拡張しようとする開発者がいることは、とても驚きです。が、全部同じスレッドでやってくれと申し出る...。
とにかくすごいんです。

サプライズには賛成です。
唯一の解決策は、アプリケーションのために非同期関数を持つDLLを見たことです。
しかし、そのようなアプリケーションは、DLLが許可されていないため、kodobaseに置くことすらできない。

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

これではうまくいくはずがありません。Windowsのインターフェイスもシングルスレッドで処理される。そうでない場合は、ウィンドウやコントロールが優先されることはありません。スレッドに分割できるのは、GUI本体と各種データの処理だけです。事実上、コントロールのデータ変更も、別のスレッドからはできない。ダイアログは常に首尾一貫していなければならないので、ダイアログのレンダリングとリアクションは厳密に1つのスレッドで、つまりすべてが同期的に行われます。

非同期データ処理の優先順位をあらかじめ考えておけば、すべてうまくいきそうな気がします。
つまり、同期処理で、非同期処理の方式を構築することです。

 
Roman:

驚きとともに、そう思います。
唯一の解決策は、アプリケーションに非同期関数を持つDLLをソーイングすることです。
しかし、そのようなアプリケーションは、DLLが許可されていないため、コドベースの中に置くことすらできません。

実際、GUIのイベント処理を 並列化する必要性はまだないのです。1000セルのテーブルがMT4でも比較的高速に動作するのであれば、残りのイベントにも十分すぎるほどの速度がある。私の実践では、減速はありません。超高速なアニメーションが必要な場合は、OpenCLを接続することができます。MT5では通常のGUIを完璧に引き出します。全く問題ありません。以上、キャンバスの再描画について、注意すべき点を紹介しました。

Expert Advisor 自体が重い計算を含む場合、GUI でのデータ出力頻度を減らすことができます。大きなウィンドウの再描画は100msに達することもありますが、通常はもっと短い時間で済みます。そのため、GUI上で100msの遅延が発生するのは、EAの計算が非常に重い場合のみです。

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

驚きとともに、そう思います。
唯一の解決策は、アプリケーションのために非同期関数を持つDLLを見たことです。
しかし、そのようなアプリケーションは、DLLが禁止されているため、コドベースに置くことすらできない。

DLLレベルでいろいろなことができる。

MTはそのために設計されているわけではないので、そこはcan+must+doです :-)

dllをコントロールできないからこそ、市場に出回らないのです。ちなみにdllはkodobaseで探すことができます。今は何らかの理由で禁止されているのかもしれませんね。

PS ところで、不思議な質問ですが、DLLは開発者の鍵で署名することができるのでしょうか?マーケットプレイスやkodobeiseでもそのようなDLLを許可することは可能ですが、マイクロソフトのインフラに縛られることになります。このようなVisual Cのライセンスを購入する準備ができている人はいますか?
 
Roman:

驚きとともに、そう思います。
唯一の解決策は、アプリケーションのために非同期関数を持つDLLを見たことです。
しかし、そのようなアプリケーションは、DLLが禁止されているため、kodobaseに置くことすらできない。

そう、そこが一番の問題なんです!同市場ではdllの使用が禁止されているため、車輪の再発明をしなければならない。GUIは必要ないと思う人がいても、1つのスレッドでどんな場合でも複雑な長時間の計算はうまくいかず、すべてがハングアップしますだから、市場で禁止されているDELLでやらなければならない...。

といった具合に。そのため、私はすべてをmqlメソッドで描いて解決する必要があります。

実は、GUIとロジックをスレッドに分離することは、もちろんすでに可能です。ここでは、並列性の問題については、すでに https://www.mql5.com/ru/forum/288985/page5#comment_14722396 で議論されています。

その結果、winndaで行われているように、フォーム自体はメインスレッドに残し、追加の計算を「バックグラウンド」実行に移行させることができるようになりました。ウィンドウズやリナックス、アンドロイドはそうなっています。

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

DLLレベルでこれだけのことができるのです。

これがMTの目的ではなく、can+must+doです :-)

dllを制御できないから市場に出回らないんだろ。ちなみにkodobaseにはdllがあります。今は何らかの理由で禁止されているのかもしれませんね。

PS ところで、不思議な質問ですが、DLLは開発者の鍵で署名することができるのでしょうか?MarketplaceやKodobeiseでもそのようなDLLを許可することは可能ですが、Microsoftのインフラに縛られることになります。このようなVisual Cのライセンスを購入する準備ができている人はいますか?

たしかにDLLは制御できないが、同じ風のライブラリを許容することはできるだろう...。

標準ライブラリの 一部であっても、winAPIにアクセスするための関数があるのです。しかし、何の意味があるのでしょうか?結局、市場には出せない...。

さて、そんなこんなで、またまた洪水に巻き込まれました。

 
Maxim Kuznetsov:

DLLレベルでできることはたくさんあります。

これは、MTが意図していないことであり、そこでできる+しなければならないことです :-)

dllをコントロールできないからこそ、市場に出回らないのです。ちなみにdllはkodobaseで取得できます。何らかの理由で禁止されたのかもしれませんね。

PS ところで、不思議な質問ですが、DLLは開発者の鍵で署名することができるのでしょうか?マーケットプレイスやkodobeiseでもそのようなDLLを許可することは可能ですが、マイクロソフトのインフラに縛られることになります。このようなVisual Cのライセンスを購入する準備ができている人はいますか?

なぜ、マイクロソフトのインフラにバインドする必要があるのか?
MQで管理されていれば、どんな鍵でもDLLの署名に使えると思います。
したがって、これらの鍵はMQから発行され、アプリケーションのハッシュ量を制御する必要があります。

 
Roman:

なぜ、マイクロソフトのインフラに縛られなければならないのか?
MQで管理されている鍵であれば、どんな鍵でもDLLの署名に使えると思うのですが。
したがって、これらの鍵はMQから発行され、アプリケーションのハッシュサムを制御する必要があります。

しかし、この蟻塚ではマイクロソフトがボスだからです :-)

海賊版のVinで製品のアップグレードやアクティベーションを行う際に、ログイン情報を紛失してしまうのはなぜでしょうか?