MQLによる非同期・マルチスレッドプログラミング - ページ 13

 
Реter Konow:

マルチスレッドが追加されたら、体調が悪くなるのでは?それで、MQLにいろいろなものを追加してくれて、本当に便利なものになったんです。しかし、その有用性は、MQLで非常に複雑で面倒なプログラムを書いている人でなければ理解できないだろう。マルチスレッドの意味が分からないということは、そのようなプログラムを書いていないということです。そうすれば、きっとわかってもらえると思います。それはとてもシンプルなことです。))

マルチスレッドは、特にテスターで、特にマルチインストルメントモードで、絶対に必要です。パフォーマンスが不足しがちなんです。ただ、私はプログラミングの専門家ではないので、微妙なところはよくわからず、いろいろなことを並行してカウントする必要があることだけは知っています)。また、テスターのパラレル化は非常に有効だと思います。
 
Реter Konow:

マルチスレッドが追加されたら、悪化するのでは?

そんなことはない、もっと良くなる- しかし、ここで重要なのはサポートです。誰が使い方を説明するのか?- 誰がバグフィックスするのか?- 理解できる保証された機能を誰が提供するのか?

MTをどのように、誰が使うかという開発者の基本的な考え方によれば、C++に相当する機能を提供することで、トレーニングや動作説明の「頭痛の種」を取り除いている--C++に関する文献や20年来のWeb上での入門用プログラムの作成例から、多くのことが収集されている

C++に適用するような既製のパッケージ(TCの問題に従って)を見たことがありますか?

 
Igor Makanu:

"専門家"?- 話すことないだろ、イミフを突っ込めよ...。ここは様々な分野のプロが集まる大きなMQLコミュニティです。残念ながら、あなたはコミュニティにとって有益な知識を何一つ示していません。「あなたこそ専門家だ!」と私を非難することは可能です。"


デベロッパーはどうする?- なぜ必要なのかすら説明できないんだろう?)))

MetaQoutesの目的は何ですか?- IT企業と同じように、利益を上げることが目的です。MetaQoutesはサービスの普及に非常に熱心で、アルゴリズム取引の普及、分析資料の提供、オンラインコミュニティの創設など、多くの取り組みを行っています。このようなチャリティーを行うのは一部のIT企業だけで、通常はIT大手企業

ということで、将来(かどうかはわからないが)利益が出るものに会社が資源を使う......。と思ったら、なんと遅れているPythonやJavaの概念をMQlに適応させる必要があるユーザーが現れる......。おかしいと思いませんか?- 何歳なんだ?)


私は、粘り強さが人生のニッチを見つける唯一の方法であることが多いと尊敬しています!このハードワークで頑張ってください。

この話題であなたと話すことはありません!
MetaQuotesが非同期プログラムを書けるようになることで、どのような有効なメリットがあるのか、論理が足りてないのでは?
そして、非同期プログラムを書く専門家を惹きつけることができる。
そして、地域には十分な専門家がいて、問題やアイデアを相談することができ、「私は専門家です」と言っても聞き入れてもらえません。
残念なことに、専門家になるためには、それがどのような言語で使われていても、技術についていく必要があるのです。
C++も非同期で書かれていると言われても、おそらく理解できない、自分で非同期タスクを設定していないのでしょう。
そして、熱意はほどほどにしましょう、普通のコミュニケーションもできません。

 
Roman:

この話題で話すことがないのはお前だろ!?

を、話さなくても、答えがない。


なぜ取引端末が 必要なのか、という問いに答える。
 
Maxim Romanov:
マルチスレッドは、特にテスターで、特にマルチインストルメントモードで、絶対に必要です。パフォーマンスを欠くことが多い。でも、私はプログラミングの専門家ではないので、微妙なところはよくわからず、たくさん、並行してカウントする必要があることだけは知っています)。また、テスターのパラレル化は非常に有効だと思います。
そして、3次元のビジュアライゼーションを開発するのですが、計算、インターフェースイベント、外部イベント(サーバーコール)と1つのスレッドにまとめるのは合理的ではありません。DLLは適切ではありません つねに というのも、プログラムを自由に配布することができないからです。
 
Igor Makanu:

そんなことはない、もっと良くなる- しかし、ここで重要なのはサポートです。誰が使い方を説明するのか?- 誰がバグフィックスするのか?- 機能性を理解できるように保証するのは誰なのか?

...

私から見ると、これが一番の問題点です。このテーマで人々がコミュニケーション することが大きなポイントです。フォーラムには新しいトピックが必要です。そうでしょう?これからもっと良くなっていくんです。さて、ユーザー間で問題やバグが発生した場合、何が致命的なのでしょうか?それがなかったら?)

 
Andrey Pogoreltsev:

非同期クエリ実行を要求しておきながら、マルチスレッドを例に挙げるとは...。私はあなたに解明するよう促したが、あなたは決して解明しなかった。

あなたの正確な問題に対する解決策をここで教えました: https://www.mql5.com/ru/forum/318593/page4#comment_12568119

でも、勉強もしてないんでしょうね。

非同期キューを与えても、マルチスレッドを要求するように思えるが...。少なくとも、OVERLAPPEDとイベントを理解することから始めてみてください。)

ターミナルにマルチスレッドを導入すれば、光の速さよりも速く、ヲタクなプログラマーから葬り去られることでしょう。

プログラマーは問題の解決策を求めているのであって、自分たちの無知に合わせてフレームワークを変えろとは言わない。

いや、間違っている。全部見たから、必ず調べるよ。
ちなみに、少なくとも良い方向性を示してくれたのはあなただけで、他は失敗ばかりでした。
ただ、本質を理解していない人が多いので、その人たちの質問に答える必要があったんです。だから、質問に答えなければならないし、話題も大きくなってしまうのです。
マルチスレッドや非同期接続のための技術はいくつかありますが、だからこそ理解できない人が多いのです。
そして、急遽インターネットからサンプルを出すことになったのですが、それであっても、少なくとも技術の要諦は何とか説明することができました。
他の技術をわざわざ見せて、その仕組みを説明する人はいない、ワンコーラス。

 
Roman:

いえいえ、間違っていますよ、一通り目を通しましたから、曖昧にせず調べます。
ところで、少なくとも真の方向性を示してくれたのはあなただけです......ありがとう。
ただ、本質を理解していない人が多いので、その人たちの質問に答える必要があったんです。だから、質問に答えなければならないし、話題も大きくなってしまうのです。
また、マルチスレッドや非同期接続については、いくつかの技術があるため、理解できない人が多いようです。
そして、急遽インターネットからサンプルを出すことになったのですが、それであっても、少なくとも何とか技術の本質を説明することはできました。
他の技術をわざわざ見せて、その仕組みを説明する人はいない、ワンコーラス。

マルチスレッド - タスクが複数のスレッドで実行されます。シングルプロセッサで動作させることができ、なおかつマルチスレッドで、プロセッサの時間枠がなくなると切り替えて動作させることができます。共有リソースへのアクセスに同期を必要とする。デッドロック、レースコンディション、メモリ解放 バグ、その他の「驚き」につながる可能性があります。

非同期 - 通常は他のデバイス(ネットワーク機器、ストレージデバイス、周辺機器など)上でブロックされない関数実行(つまり、メソッド終了後すぐに制御が戻る)。 たとえば、1つのスレッドとエンドマシン処理のクライアント接続のみを使用して、高性能なマルチユーザーサーバーを書くことが可能です。すべては、このサーバーの目的次第です。

あなたの場合、WinAPIを使って多数の接続を作成する必要があり、これらの接続の状態をタイムアウト付きのWaitForMultipleObjectsでチェックできるので、例えばタイマーのスレッドを維持する必要はない。

PS.理論的にはIOCompletionPortも使用可能ですが、より多くの知識と慎重な設計が必要です。
 
Andrey Pogoreltsev:

マルチスレッド - タスクが複数のスレッドで実行されます。シングルプロセッサで動作させることができ、なおかつマルチスレッドで、プロセッサの時間枠がなくなると切り替えて動作させることができます。共有リソースへのアクセスに同期を必要とする。 デッドロック、レースコンディション、メモリ解放 エラー、その他の "サプライズ "を引き起こす可能性があります。

本当に危険なのか?メモリ解放のエラー...しかし、Expert Advisorは異なるスレッドで異なるチャートで実行され、予期せぬ失敗はない。つまり、EA間で分散されたタスクはクリティカルエラーを起こさないが、1つのEA内のスレッド間で分散されたタスクはクリティカルエラーを起こすということですか?もちろん、私はこういったことの専門家ではありませんが、EA間のタスク分配の方法を1つのEAに移行することに何か問題があるのでしょうか?おそらく問題があるのだろう、私は反論しない。

 
Andrey Pogoreltsev:

マルチスレッド - タスクが複数のスレッドで実行されます。シングルプロセッサで動作させることができ、なおかつマルチスレッドで、プロセッサの時間枠がなくなると切り替えて動作させることができます。共有リソースへのアクセスに同期を必要とする。デッドロック、レースコンディション、メモリ解放 バグ、その他の「驚き」につながる可能性があります。

非同期 - 通常は他のデバイス(ネットワーク機器、ストレージデバイス、周辺機器など)上でブロックされない関数実行(つまり、メソッド終了後すぐに制御が戻る)。 たとえば、1つのスレッドとエンドマシン処理のクライアント接続のみを使用して、高性能なマルチユーザーサーバーを書くことが可能です。すべては、このサーバーの目的次第です。

あなたの場合、WinAPIを使って大量のコネクションを作る必要があり、それらのコネクションの状態をWaitForMultipleObjectsでタイムアウト付きでチェックできるので、例えばタイマーのスレッドを保持する必要はありませんね。

PS.理論的には、IOCompletionPortを使うこともできますが、より多くの知識と明確な設計が必要です。

さて、これは会話ですが、asyncioでノンブロック実行をしたことがありますが、ここでcoroutineやcalbackと書くと混乱するので、何も言わないほうがいいと思います ))
私自身、ノンブロッキングコールの原理は知っていますが、pythonともう1つのCとC++のライブラリだけです。
私はWinAPIを扱ったことがないので、勉強してみます。他のライブラリも見ていましたが、違いはありません。)
しかし、会話の中で、私は、通常のmqlにそのような機能を追加して、非同期コードをすぐに書けるようにすることを提案しました。
そして、何のために、なぜ、ということがわからなくなり、混乱し始めたのです。Because it's because ))