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

 
Andrey Barinov:
...

1000行の表で、スクロールすることで目視で見つけられるものは何か?どのような問題を解決しているのか?

追伸:またまたオフトピック・・・。

アンドリュー、課題はユーザーが任意のテーブルを作成できるようにすることだった。シャープのように。何を考えているかわからないから......))。

オフトピックを終わらせることを提案します))。


公平を期すため、テーブルの可視部分のみを再描画し、スクロールイベントで不可視部分のみを再描画することが可能です。しかし、今回もストレステストでした。


すべては、テーブルの中の値が具体的にどのように変化しているかによります。値が非常に速く絶えず変化する場合は、可視領域のみを再描画し、スクロール中に不可視領域を再描画するのがよいでしょう。値の変化の頻度が低い場合は、一度に再描画した方が、スクロール開始時に再描画のために遅延が発生しないので良い。テーブルの値がどのくらいの頻度で変化するかは正確には分からないので、私は普遍的な方法、つまり一度にすべて再描画する方法を選びました。値が狂ったように飛び交うテーブルはあまり見かけないので、一度に再描画したほうがいい。そこで、キャンバス全体を一度に再描画して、スクロール開始時の遅延を回避するのがよいでしょう。

SZY 900×7000ピクセルのキャンバスを再描画するのにかかる時間を見たことがありますか?MT5でも、この遅延は数百ミリ秒に達することがあります。 スクロール開始時にこのような遅延が発生するのは、非常に不愉快です。そのため、再描画の頻度が少ない場合は、一気に描画した方が良い。

話を戻すと、これがMT5でマルチスレッドが必要とされる理由の一つです!(笑)


最後にもうひとつ。大きなテーブルを頻繁に再描画するとプロセッサに負荷がかかるという問題を避けるために、別の方法を選びました。数値の変化速度を調整するために、専用のレギュレーターを作りました。つまり、値は素早く変化するが、その出力(再描画)の速度は、ユーザーがスライダーで調節する(見せた)。このように、プロセッサの負荷が軽減される時期もあり、ユーザーは表から情報を知覚することができ、より便利になりました。

 
Реter Konow:

アンドレイ 課題は、ユーザーが任意のテーブルを作成できるようにすることでした。シャープのように彼の頭には何が飛び込んでくるかわからない...))

offtopicを終了することをお勧めします))。


公平を期すため、テーブルの可視部分のみを再描画し、不可視部分を再描画できるのはスクロールイベント時のみとします。しかし、今回もストレステストでした。


SZY テーブルの値が具体的にどう変わるかによりますね。値が非常に速く絶えず変化する場合は、可視領域のみを再描画し、スクロール中に不可視領域を再描画するのがよいでしょう。値の変化の頻度が低い場合は、一度に再描画した方が、スクロール開始時に再描画のために遅延が発生しないので良い。テーブルの値がどのくらいの頻度で変化するかは正確には分からないので、私は普遍的な方法、つまり一度にすべて再描画する方法を選びました。値が狂ったように飛び交うテーブルはあまり見かけないので、一度に再描画したほうがいい。そこで、キャンバス全体を一度に再描画して、スクロール開始時の遅延を回避するのがよいでしょう。

SZY 900×7000ピクセルのキャンバスを再描画するのにかかる時間を見たことがありますか?MT5でも、この遅延は数百ミリ秒に達することがあります。 スクロール開始時にこのような遅延が発生するのは、非常に不愉快です。そのため、再描画の頻度が少ない場合は、一気に描画した方が良い。

話は戻りますが、これがMT5でマルチスレッドが必要な理由の一つです!(笑)


最後にもうひとつ。大きなテーブルを頻繁に再描画するとプロセッサに負荷がかかるという問題を避けるために、別の方法を選びました。数値の変化速度を調整するために、専用のレギュレーターを作りました。つまり、値は素早く変化するが、その出力(再描画)の速度は、ユーザーがスライダーで調節する(見せた)。このように、プロセッサの負荷が軽減される時期もあり、ユーザーは表から情報を知覚することができ、より便利になりました。

Peterさん、非同期、マルチスレッド、並列の違いは理解できていますか?

 
Sergey Chalyshev:

Peterさん、非同期、マルチスレッド、並列の違いは理解できていますか?

1つのスレッドで非同期または並列に動作させる例を挙げた方がいいのでは?
 
Реter Konow:
同じスレッドで非同期や並列動作の例をあげるといいと思います。

よし、かかってこい!

 
Sergey Chalyshev:

OK、Bring it on!

私は知りません。

フローはシーケンスを提供するだけであり、狭いシーケンスの中でパラレルになることは難しい。あるシークエンスの中で、推測的に非同期でいるしかない。それまでの迂回路を振り返り、古いルートに新しいねじれを指摘し、誇りを持って新しい道を歩んでいると考える......。

1つの点を無数の平行線が通れると信じている自信家のコーダーの創意工夫では、シングルスレッドの限界は乗り越えられないと理解してください。この非ユークリッド幾何学は、プログラムの実態にそぐわず、スレッド内部の処理に非同期性を付加することもない。
 
Sergey Chalyshev:

よし、かかってこい!

片手で拍手? 外に向かって禅は禅じゃない :-)

ピーターが砂場に入らないのは事実でしょう。彼は基本的に用語が理解できないのです。

そんなこと聞いてどうするんだ」「プロの記者のようにしゃべりだすぞ

 
Maxim Kuznetsov:

片手で拍手? 外に向かって禅をするのは禅じゃない :-)

ピーターが砂場に入らないのは事実でしょう。彼は基本的に用語が理解できないのです。

そんなこと聞いてどうするんだ」「プロの記者のようにしゃべりだすぞ

なぜ失敗したのか?笑ってしまいますね。では、パラレリングを使ったシングルスレッド非同期の例を教えてください。自虐的でないなら、自分が間違っていることを認める。
 
みんな、まあ、初歩的な論理。さて、1つのスレッドで、1つのアクションのシーケンスを飛び越えて、非同期なものを作るにはどうしたらいいでしょうか?円運動をしながら、反復ごとにどの操作を行い、どの操作を先送りするかを判断していくしかない。しかし、それは正常な非同期なのでしょうか?平行移動の話は一切しない方がいい。1つのスレッドでどのような並列処理が可能なのか?))

2つのスレッド - 互いに非同期な2つの別々のアクションシーケンス。
 
Реter Konow:
まあ、みんな、初歩の初歩の論理なんだけどね。さて、1つのスレッドが1つの操作のシーケンスを飛び越えて、非同期で何かを行うにはどうしたらよいでしょうか。そのためには、円を描くように移動し、その都度、どの操作を行い、どの操作を先送りするかを判断するしかない。しかし、それは正常な非同期なのでしょうか?平行移動の話は一切しない方がいい。1つのスレッドでどのような並列処理が可能なのか?))

2つのスレッドは、互いに非同期な2つの分離したアクションシーケンスです。

2つ、または22のスレッドは、同期または非同期のいずれかになります。1つのスレッドには、同期と非同期の両方の操作を含めることができます。方法を示していますね。パラレルは、パラレルのものをどう含めるかわからない。

 
Реter Konow:
みんな、まあ、初歩的な論理。さて、1つのスレッドで、1つのアクションのシーケンスを飛び越えて、非同期なものを作るにはどうしたらいいでしょうか?円運動をしながら、反復ごとにどの操作を行い、どの操作を先送りするかを判断していくしかない。しかし、それは正常な非同期なのでしょうか?平行移動の話は一切しない方がいい。1つのスレッドでどのような並列処理が可能なのか?))

この2つのスレッドは、互いに非同期の2つの分離したアクションシーケンスです。

非同期呼び出しは、必ずしも新しいスレッドを作成するわけではありません