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

 
Roman:

私はすべてが好きです))さまざまなアプローチで理解し、より納得のいくもの、要件に合うものを選ぶ、シンプルなことです。

全世界はDLLで動いており、ICLの素晴らしさは、それが最高の能力だと考えているセクトの集団だけである。
 
Yuriy Asaulenko:
全世界はDLLで動いていて、ICLの奇跡はそれが最高能力だと思っている宗派の人たちだけです。

面白いですね、大賛成です ))))
マニュアルを読んで、オプションについて考えるのはよくあることです。
本当にはぐらかすことなく、様々な解決策を提案してくれた皆さんに感謝します。
今では、たくさんの中から選ぶことができるようになりました。

 
ところで、古いジョークを思い出す。
国際医学会議。ロシア代表団からの報告-「肛門からの扁桃腺摘出」。
読みました。その後、会場からの質問を受け付けます。
- ロシアの外科手術の技術や成果に敬意を表します。しかし、なぜ裏の通路からなのか?
- みんなそうやってやっているんです。
 
Vict:

FuturesとAsyncはC++だけの標準という理解で合っていますか?
C言語で同様のライブラリはないのでしょうか?

 
Roman:

FuturesとAsyncはC++だけの標準という理解で合っていますか?
C言語で同様のライブラリはないのでしょうか?

そうですね。Cish std はマルチスレッドもサポートしていますhttps://en.cppreference.com/w/c/thread

ZS: アンソニー・ウィリアムズの「c++ concurrency in action」という本も読んでみてください。例えば、9章ではスレッドプールと書いている。

Thread support library - cppreference.com
  • en.cppreference.com
If the macro constant is defined by the compiler, the header and all of the names listed here are not provided. Function names, type names, and enumeration constants that begin with either , , , or , and a...
 
Vict:

そうですね。Cish std はマルチスレッドもサポートしていますhttps://en.cppreference.com/w/c/thread

HH:アンソニー・ウィリアムズの『c++ concurrency in action』という本も読んでみてください。例えば、9章ではスレッドプールと書いている。

ページ下のSee alsoリンクに気づかなかった ))
なるほど、std::threadは Cにあるけどstd::asyncはないのか ((

ちょうど今この本を読んでいるところです ))Parallel C++ programming in action, Anthony Williams.
添付の本で、
asyncは4章からで、かなり読みやすいと思います。
また、Kurt Ganteroth氏は、著書『Optimizing C++ Programs』の中で、std::asyncを使うよりもスレッドを作る方が14倍もコストがかかると主張している。
だからもともと asyncを使いたかったんですが、C/C++のスレッドについてもよく知らなかったんです。
ので、スレッドの方が 高い場合は、とにかく使用頻度が落ちる。
しかし、C言語ではstd::asyncが存在 しないことが判明した((


 
Roman:

ページ下のSee alsoリンクに気づかなかった ))
なるほど、std::threadは Cにあるけどstd:: asyncはないのか ((

ちょうど今この本を読んでいるところです ))並列C++プログラミングの実際、Anthony Williams著。
もし興味があれば、
添付ファイルにある本で、 asyncは第4章から始まっていて、かなり読みやすいです。
また、Kurt Ganteroth氏は、著書「Optimizing C++ Programs」の中で、std::asyncを使うよりもスレッドを作る方が14倍もコストがかかると述べている。
だからもともと asyncを使いたかったんですが、C/C++のスレッドについてもよく知らなかったんです。
だから糸が 高くなったら、どうせ使う 意味がないんです。
しかし、C言語では
std:: asyncは存在 しないことが判明しました((

糸は高価なものではなく、何でも作れる下級の道具に過ぎないのです。高価なスレッド "で簡単なスレッドプールを自作することができます - 1時間の書き込み(または既製のlibを取る)。

スレッドを作成することは、std::asyncを使用するよりも14倍コストがかかります。

非同期の中にスレッドプールがある場合はそうかもしれませんが、必ずしもそうとは限りません。https://stackoverflow.com/questions/15666443/which-stdasync-implementations-use-thread-pools。

その結果、asyncはこのようにブラックボックス化し、制御不能に陥っています。自分でプールを書けとは言いません、asyncで快適に過ごせるのであれば結構です。

ZS:c++17からasyncが削除されるという噂がありましたね。
Which std::async implementations use thread pools?
Which std::async implementations use thread pools?
  • 2013.03.27
  • KnowItAllWannabeKnowItAllWannabe 5,31455 gold badges3434 silver badges7676 bronze badges
  • stackoverflow.com
One of the advantages of using instead of manually creating objects is supposed to be that can use thread pools under the covers to avoid oversubscription problems. But which...
 

Asyncは同期的に実行することができ、そのためのフラグがあります。プラスでのスレッドプーリングは複雑で、極端に必要な場合のみ書く意味があると思います。シャープを見習え!あのスレッドプーリングで

Scott Meyers: Efficient and Modern C++」もおすすめです。2016年、超大作のような読みやすさ。以下にアーカイブを添付します。糸について興味深い章を設けている。そして、一般的に、マイヤーズは読むべき、ですからね )))

 
Andrei Novichkov:

プロでのスレッドプーリングは厄介で、絶対に必要な場合のみ意味があると思います。

必要以上に難しくしないでください。自分で書くのが面倒なら、既成のものを簡単にパクればいい。ここでちょっと検索してみると、https://github.com/vit-vit/ctpl。 そして、(批判されることの多い)asyncと違って、予測しにくいものです。

vit-vit/CTPL
vit-vit/CTPL
  • vit-vit
  • github.com
More specifically, there are some threads dedicated to the pool and a container of jobs. The jobs come to the pool dynamically. A job is fetched and deleted from the container when there is an idle thread. The job is then run on that thread. A thread pool is helpful when you want to minimize time of loading and destroying threads and when you...
 
Vict:

必要以上に難しくしないでください。自分で書くのが面倒なら、既成のものを簡単に手に入れることができますので、こちらで検索してみてくださいhttps://github.com/vit-vit/ctpl。 そして、(批判されることの多い)asyncと違って、予測しにくいものです。

いや、そんな気分じゃない )))))しかし、ざっくりとした検索では、うーん、あぶない。githubでたくさんのジャンクに出会いました。しかし、もう1つ興味があります。スレッドプーリングが本当に必要なタスクはあるのでしょうか?スレッドを作って忘れて終了まで待つのではなく、Williamsの言うようにプールしておくだけ?そこにはATMの例もあるようだが、私の勘違いでなければ、このような奇跡の柔道を正当化できるタスクは何だろうか?そんな仕事はまだ思いつきません。そして、ThreadPoolでは、すべてがすでに行われており、ドキュメントや例もあります。