C++相談室 part161

■ このスレッドは過去ログ倉庫に格納されています
2022/05/21(土) 21:23:29.59ID:kYXfaM+5
前スレ
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/
125デフォルトの名無しさん
垢版 |
2022/06/05(日) 18:15:07.18ID:VgN5DVM1
>>124
ブラウザでctrl+f押してみ。
2022/06/05(日) 18:28:12.08ID:dinbGc5/
>>123
手取りで1000万くらいですか?
2022/06/05(日) 19:24:35.36ID:/AT5pgYO
htmlは知らんがxmlの読み書きはC++のプログラムで一般的じゃね
2022/06/05(日) 22:30:48.15ID:n7vwmg3m
C言語の基本を学んでC++を勉強を始めました
バッファのフラッシュについて教えてください
プログラムは最後に全てのバッファがフラッシュされると思いますが、
std::flashやstd::endlはどういった時に使えばいいのでしょうか?
また、フラッシュの処理時間を考えるとstd::endlよりも'\n'を使った方が軽くなると思いますが、
あえてstd::endlを使う意味はありますか?
このフラッシュという概念はC言語になかったですよね…?
2022/06/05(日) 22:41:22.00ID:FJOOY/QK
fflush()を知らずにC言語を使ってきたなら気にする必要はない
2022/06/05(日) 22:53:56.06ID:ypMgugQ8
>>128
キミの疑問の中に答えがあると思うんだが

>プログラムは最後に全てのバッファがフラッシュされると思いますが、
逆に言えばプログラムの途中ではいつバッファの内容がflashされるかわからないってことじゃん
どういった時に使えばいいのか、なんてプログラムの最後ではなく途中でflashしたい時だろ
2022/06/05(日) 22:55:08.26ID:JCaRLrt5
stderr(バッファリング無し)とstdout(デフォルトでバッファリング有り)のリダイレクト先が同じ(コンソール等)のとき、
printf()とfprintf()の実行順にprintf()とfprintf()の出力結果を並ばせたいときに早速ffush(stdout)の出番が、
あとfflush()せずにabort()したらバッファ上のデータが失われることがある
もっともabort()を呼ぶしかない状況とかはどうしようもない状況なので盲目的なfflush()が適切とは言えないケースも
ありえるかもし
れんが
2022/06/05(日) 23:00:34.55ID:JCaRLrt5
んまー通常はファイルのクローズでフラッシュされるから明示的にファイルポインタに対してfflush()する必要に迫られることはなさげ
腸人工的なシチュエーション(でありかあまり良い設計でない例)として、
オープンしたままのファイルA、Bにこの順でデータが追記されることを気体するプロセスが他に居るときに
A、Bの順で追記するとき要る?ぐらい??
2022/06/05(日) 23:11:06.10ID:TqTpE262
他のプロセスと通信する時に明示的なバッファフラッシュが必要になることがあるよ
2022/06/05(日) 23:17:22.56ID:JCaRLrt5
>>133
それは思わないでもなかったが、
1. バッファに入った順で出ていく
2. ほっといてもバッファ内容がどんどん出ていく
3. 通信は送りっぱなしまたはロジカルなハンドシェーク手順
である場合にfflush()が必須というケースが思いつきませなんだ、
135デフォルトの名無しさん
垢版 |
2022/06/05(日) 23:24:31.44ID:/ywqNijR
1行ごとに結構重い処理をしたり、std::cinが入ってくるタイミングが不定期だったりするときに1行ごとにflushしておくと便利。
C言語でも使うテクニックだけどね
2022/06/05(日) 23:25:34.70ID:TqTpE262
送信側(自アプリ)じゃなくて受信側(他アプリ)の都合次第なので
2022/06/05(日) 23:36:59.90ID:JCaRLrt5
>受信側(他アプリ)の都合次第
どのような都合かkwsk、
fflush()したら動いて、fflush()しないと止まってしまう通信処理とかはなんかおかしいのでは……

ほっといてもバッファ内容がどんどん出ていく 限りfflush()せずとも送信は成立する
受け取れたかどうかはACKかNAKでも返してもらえばワカルから、
受信タイムうアウト検知ぐらいしかタイミングが関係する要素は無さげ、
2022/06/05(日) 23:57:14.80ID:TqTpE262
「受け取れたかどうかはACKかNAKでも返してもらえばワカル」ってのがすでに受信側の都合だろ
2022/06/06(月) 00:02:59.46ID:NTJIoMOy
コンテキストスイッチをきっかけにフラッシュするような仕組みはあるん?
2022/06/06(月) 00:15:14.95ID:1jBvtBty
それがフラッシュしておかないと停電のときデータ全部持ってかれるんだよな
2022/06/06(月) 00:19:06.76ID:68av+k9D
とりあえず言っておくが、水がもったいないからと言って水洗トイレを流さずに退出するのはやめたほうがいい
2022/06/06(月) 00:21:03.22ID:68av+k9D
>>139
小便用トイレだと赤外線で退出を探知して水を流してくれるものもある
2022/06/06(月) 00:23:36.15ID:1jBvtBty
フラッシュってのはハードディスクにどこまでデータ書いたか正規化する目的で行うから、フラッシュしないで停電モードでクラッシュすると、復旧したときに書いてたデータはゼロバイトのままだったりするが、こまめにフラッシュでデータを確定申告してる場合は書いた分がきちんと残ってたりする
2022/06/06(月) 00:26:15.98ID:Wu7kw3Sh
これからは税務署に追徴課税されないように足繁く通うことにします。
2022/06/06(月) 00:28:00.96ID:1jBvtBty
ま、無停電装置つけてたり電源不足などでHDDが頻繁に切断される環境でなければ問題ないけどね
2022/06/06(月) 00:28:38.87ID:68av+k9D
一休はすでに縄を持って待ち構えてくれているのだから、義満が虎を屏風から追い出せばいいだけ
簡単なことだろ
147デフォルトの名無しさん
垢版 |
2022/06/06(月) 02:46:25.01ID:ETmHHhEk
誤解している人が多そうだけど
fflush()はC標準ライブラリの中のバッファリングデータを全て吐き出すだけであって
システムコールでいえばwriteするだけだよ
一方でカーネルがディスクなどに書き出すのを保証するのはシステムコールではsync/fsyncであってこれはfflush()しても行われない別のもの
14859
垢版 |
2022/06/06(月) 03:12:54.60ID:hkI7oR+t
遅レスすいません。
右辺値参照周りを自分でも見直してきたんですが、
最終的に「vecの要素」に所有権を押し付けるコードは↓で正しいのでしょうか?
void add(vector<int> &&x){
 vec.push_back(std::move(x));
};
・std::forwardを使う場合は、型がテンプレートの場合(フォワーディング参照の場合)に使うのが一般的であって、
 上では具体的な型(vector<int>)を指定しているので、forwardを使う場合に当てはまらない。
・vector<int> &&xとして引数を受け取っても(右辺値参照として引数を受け取っても)、
 右辺値参照自体は左辺値になるので、
 vec.push_back(x)としてしまうと、呼ばれるpush_backは push_back(const T&)であり、所有権が移譲されない。
 なので、ここでもmoveする必要がある(vec.push_back(std::move(x))

この理解であってますか?
149デフォルトの名無しさん
垢版 |
2022/06/06(月) 08:55:53.89ID:Ug3DHjCK
>>147
sync sync sync
最後に電源切る前に
^C 連打ですね
判ります
150デフォルトの名無しさん
垢版 |
2022/06/06(月) 09:02:16.31ID:Ug3DHjCK
https://qiita.com/_meki/items/90f9815a1e899593daa3
https://peng225.果て部.com/entry/2016/07/30/211726
2022/06/06(月) 10:28:12.30ID:x36Ky4fa
WinだとFileFlushBuffersだけで完結する
152デフォルトの名無しさん
垢版 |
2022/06/06(月) 10:28:30.66ID:0alNkgKE
noexceptの有無で動作が変わるなんてC++ムズすぎィ!
153デフォルトの名無しさん
垢版 |
2022/06/06(月) 11:42:00.12ID:Ug3DHjCK
>>152
>>66
154デフォルトの名無しさん
垢版 |
2022/06/06(月) 11:43:05.77ID:Ug3DHjCK
まあ原因と結果が全然離れた別の場所で起こるっていう意味では難易度高いとは思う
155デフォルトの名無しさん
垢版 |
2022/06/06(月) 12:41:54.06ID:jOQJjNZV
>>148
あってる
2022/06/06(月) 21:20:45.44ID:FY57Ayyt
>>126
この国は累進課税なのでそのラインは難しいですね
2022/06/08(水) 00:14:11.77ID:0qhQo4nk
>>66の話は>>59へのだったのか?w

>>155 ほか回答頂いた方
ありがとうございました。
2022/06/08(水) 00:17:03.29ID:xZpQpCco
moveをやれるヤツはmoveをやる勇気があるヤツだけだ
2022/06/08(水) 22:59:00.34ID:lI0dIi5c
>>138
話をそらすでないは;;;
通常のキャラクタ型デバイスならfflush()せずともバッファ内容がどんどん出ていって
受信側(他アプリ)に伝わるやんけ
fflush()全然必須じゃないやんけ
fflush()に関してはやっぱ受信側の都合も糞も無いやんけ;;;

んまー今日日の計算機は速いから、世迷言てんこ盛りの呪術指向プログラミングでも
比較的まともっぽく動くが、
2022/06/08(水) 23:03:01.67ID:lI0dIi5c
fflush()にはフロー制御で止まっている送信を動かす力は無いし、
ブロック型デバイスの書き込みのトリガーになる保証は無いしで
やっぱ使いどころは>>131みたいに多対1の書き込み(dstが同じ)というケースでの論理的な書き込み順序保証ぐらいしか無さげ
2022/06/08(水) 23:39:12.93ID:TQgrAlst
>>159
水に流せ
2022/06/09(木) 19:04:36.80ID:d61AFL9R
受信側の都合どうこうの話は知らんが
>通常のキャラクタ型デバイスならfflush()せずともバッファ内容がどんどん出ていって
それは送信側がどんどん送り出している場合でしょ
2022/06/09(木) 19:12:48.98ID:6LGi7Ubo
高機能トイレしか使ったことない人は、何もしなくても離席したら勝手に排泄物が流されていくと思っているからね
2022/06/09(木) 19:16:36.26ID:ftpPDZQh
停電おこったことないんだろうね
2022/06/09(木) 21:05:58.36ID:Y+xZp6wU
トイレの水流すのもflushだったなwww
2022/06/09(木) 21:14:08.39ID:0SCWcBb2
むしろコンピュータ用語のflushの方がトイレからの連想
2022/06/10(金) 18:08:30.15ID:PT4Yy0z8
flushつったらズリセンだろ
2022/06/10(金) 18:15:06.01ID:q3uEdydr
長時間ストリーミング書き込み時にFileFlushBuffersコールしてなかった停電時の悲劇
169128
垢版 |
2022/06/11(土) 13:05:09.88ID:qY+svW4r
なんとなく分かりましたが、C言語でfflush()を使っていなかったので困ることもなさそうです
改行は'\n'を使ってもう少し勉強を進めてから改めて皆さんのレスを読み返そうと思います
返事が遅くなりました、ありがとうございました
2022/06/11(土) 15:25:15.53ID:b1p/w9+9
https://ideone.com/P9fDXn
コンパイル通らねー。
2022/06/11(土) 21:16:14.33ID:ZeuO2q0P
>>163
ソフトウェアー呪術者、、、、

>>163 のような台詞はファイルをクローズしない人に言ったらよい
fflush()しないことにに当てはまらない理由はすでに述べているっつーの;;;
2022/06/11(土) 21:25:33.69ID:ZeuO2q0P
>>168
左様停電に対して備えたいならI/Oストリームのバッファ階層の操作で満足するのではなくて
ioctlレヴェルの働きかけで掃き出し操作を保証を行うべき、(デバイスによってやるべきことが違う

というわけで論理的思考う能力に乏しい香具師がfflush()万能教にはまっている悪寒、
2022/06/11(土) 21:47:10.33ID:ZeuO2q0P
ていうかそもそも馬鹿でかいバッファを用意しておいてから停電を恐れるというのはアレな発想でありまして、
真に停電に備えたいなら馬鹿でかいバッファを備えたデータのストリームとは別に、
どこまで書き込みが終わったかというだけの小さいサイズのジャーナル情報を
こまめに書くというのがファイナルアンサーであって
停電の際はジャーナル情報だけ保証して停電の瞬間に馬鹿でかいバッファ上にあったデータは諦めるのが正しいシステム

停電による処理中データの喪失がどうしても嫌ということなら速度の方を諦めてアンバッファーにするかバッファを小さくしてくだち、
2022/06/11(土) 21:56:10.36ID:ZeuO2q0P
まとめ:
この地球上のどこを探しても停電への備えがこまめなfflush()(笑)ということはありえない
2022/06/11(土) 22:48:11.94ID:fc6R3/Uh
まだ言うか!
2022/06/11(土) 23:31:57.10ID:pfxnOy19
小さいサイズでもそれが即座に反映だれるとは限らないけどな
停電に備えるならUPSだろ
何がこまめに書くのがファイナルアンサーだよ
突然の電源断で書き込み先のデバイスが壊れる可能性だってあるんだからな
2022/06/11(土) 23:44:48.33ID:/CWj/UNa
粗悪なUPS使って電源破損した事あるから良い印象ないな
2022/06/12(日) 13:55:23.39ID:0uPAg53b
FFTで2^(2^34)-1を計算するやつの倍速化したやつをさらに倍速化したった……!

■ オリジナル
https://ideone.com/xSaa6x
2200秒

■ C++書き換え版
https://ideone.com/oDgjXr
2200秒

■ 倍速化
https://ideone.com/xHSzFD
962秒

■ ブロック6-step algorithm適用
https://ideone.com/rFCMy5
909秒 (倍速化版の94%) --- OpenMP無効、シングルスレッド
596秒 (倍速化版の62%) --- OpenMP有効、8スレッド
2022/06/12(日) 13:55:40.64ID:0uPAg53b
なんかもうCPUの帯域全部使い切ってやったぜ、みたいな
達成感みある、
ただし実行時間の2/3ぐらいはファイルの書き出しに使われている模様orz

OpenMP有効化の条件だと
2^(2^31)-1までは1分以内に出て、
以降はVS2019の分析ツールのCPU時間のグラフを眺める限り、
ファイル出力を覗く正味の計算時間は
2^(2^32)-1: 20秒
2^(2^33)-1: 不明(見てなかった)
2^(2^34)-1: 62秒
だったので、ファイル出力を除く正味の計算時間は多分3分ぐらい、
2022/06/12(日) 14:00:10.22ID:0uPAg53b
OpenMPは昨日始めたのでなんか間違ってるかもしれん……orz
行列の転置が8スレッド使って(2回目以降も)実行時間1/8にならない件について:

https://ideone.com/rFCMy5
のfftb6::transpose()のコードの書き方だと50%ぐらいにしか短縮されなんだ 。n_
2022/06/12(日) 14:02:02.73ID:0uPAg53b
つなみにVS2019でOpenMP有効にするには
「構成プロパティー」→「C/C++」→「言語」→「OpenMP のサポート」
で逝ける、
2022/06/12(日) 14:04:35.42ID:0uPAg53b
>>176
>何がこまめに書くのがファイナルアンサーだよ
NTFSの実装、、、

>突然の電源断で書き込み先のデバイスが壊れる可能性だってあるんだからな
しらそん
それはUPSを買う金もないのに停電とかを引き合いに出してきた香具師に言ってやってくだち
2022/06/12(日) 14:10:01.25ID:6VBjP0iK
8スレッドで4倍くらいになってほしいね
2022/06/13(月) 00:27:41.34ID:HWF8Czmy
もちついて考えたら
#pragma omp parallel for firstprivate(i, n1, n2, nb, JJ)
 for (pow_t j = JJ; j < JJ + nb; j++) {
  const pow_t src_idx = n2 * i + j;
  const pow_t dst_idx = n1 * j + i;
  dst[2 * dst_idx] = src[2 * src_idx];     // 実部
  dst[2 * dst_idx + 1] = src[2 * src_idx + 1];  // 虚部
 }
と書いては見たがこのdst[]やsrc[]は実は生の配列ではなくてstd::vector<double>::iteratorなので
共用変数扱いになってスレッド間で排他がかかっているのかもしれん……orz
firstprivate()指示句が(最適化後はポインタとはいえ)C++のオブジェクトを受け取れるかはわからんので
parallel forの前にポインタに置き換えてポインタをfirstprivate()するのが無難鴨、
(同じことはsinテーブルpriroot::nth_root wについても言える)
2022/06/13(月) 14:39:57.67ID:efPEc9j/
std::complexは使わないの?
2022/06/13(月) 15:28:43.59ID:Wf2qSIvf
びーまいべいべー
2022/06/13(月) 23:36:52.53ID:dm71PatD
並列処理に何でマルチスレッド使ってんだよ
昭和からタイムスリップしてきたのか?
2022/06/14(火) 00:17:42.26ID:SQz7DEKB
omp って単語を見るとおまんぽにしか見えない
2022/06/14(火) 01:23:09.85ID:e+DfEXd1
>>187
この問題でasyncプログラミングがどうやってマルチスレッドに太刀打ちするのか教えて
190デフォルトの名無しさん
垢版 |
2022/06/14(火) 16:46:20.69ID:yDV29Um0
教えてください
C++で書かれたDLLがあります
とあるCエクスポート関数を呼び出すと稀に Access Violation 0xc0000005 が発生することがありプロセスが異常終了してしまいます

幸いなことにこの関数は大した仕事をしておらず結果が得られなければそれで困ることもありません(結果が得られれば少し役に立つ程度です)
なのでこの関数の失敗を握り潰したいのですが、C++ でアクセス違反を try-catch で握り潰すことはできるのでしょうか?
それともアクセス違反は致命的なエラーなので必ずプロセス終了に至るのでしょうか?
2022/06/14(火) 16:54:42.88ID:Vdns4Gf+
またこのネタ掘り起こしたいのか・・・
2022/06/14(火) 17:18:04.76ID:NNc5VmHP
>>190
.NETは使っとらんの?
2022/06/14(火) 17:23:59.58ID:rBU/2bdp
https://docs.microsoft.com/ja-jp/cpp/build/reference/eh-exception-handling-model?view=msvc-170

呼び出し側のコンパイルで /EHa オプションつければ try-catch で握りつぶせるんでね?
2022/06/14(火) 18:22:20.04ID:WigeF4Tr
>>190
> 幸いなことにこの関数は大した仕事をしておらず結果が得られなければそれで困ることもありません(結果が得られれば少し役に立つ程度です)
そんな関数なら空の関数に差し替えればいいんじゃね
195デフォルトの名無しさん
垢版 |
2022/06/14(火) 18:39:01.73ID:yDV29Um0
>>193
ありがとうございます!
/EHa を付けたらキャッチできました!
いままでは /EHsc が指定されてましたのでオプションの意味の違いを調べてみます
196デフォルトの名無しさん
垢版 |
2022/06/14(火) 19:23:09.63ID:bI70PJIL
DLLが例外出してるのをCで握り潰してるのが原因だろ
197デフォルトの名無しさん
垢版 |
2022/06/15(水) 20:40:34.83ID:RdmQ7I01
素人の質問でごめんなさい。(ここが一番関連ありそうだったので)
バイオインフォマティクスをやっているのですが、例えば主にC++で書かれたUnicycler (https://github.com/rrwick/Unicycler)というソフトウェアでは、--threadsオプションで使用するスレッド数を指定できます。
デフォルトだとスレッド数8なのですが、仮にそれを1コアを使って実行した際はどのような挙動になるのでしょうか。
コア数<スレッド数なので失敗するかと思ったのですが、思いの他うまく実行できてしまいます。
一般的にこういう場合、並列 (parallel)処理ではなく並行 (concurrent)処理で、スレッドごとに時間を分けて同一コアで処理している、ということなのでしょうか・・・
2022/06/15(水) 20:45:50.35ID:VY0KZJ3n
>>197
> スレッドごとに時間を分けて同一コアで処理している、ということなのでしょうか

せやで。
OS がスケジューリングしてスレッドを交互に実行しとる。
コア数以上のスレッドに分けても実行速度が上がったりはしないよ。
コンテキスト切り替えのコストの分だけむしろ遅くなると思う。
199デフォルトの名無しさん
垢版 |
2022/06/15(水) 21:02:51.51ID:RdmQ7I01
>>198
なるほど、OS賢いですね。。
つまり1コアでやるときは複数スレッドの処理もできるけど、無難に1スレッドの処理にした方がむしろ速い、ということですね。
勉強になりました!ありがとうございます!
200デフォルトの名無しさん
垢版 |
2022/06/15(水) 21:05:28.34ID:74xVOU49
各スレッドがio待ちしてるかも知れんし、コア数より多くても早くなる場合もあるんじゃね
gcc動かすときもコア数1.5倍位指定してる
201デフォルトの名無しさん
垢版 |
2022/06/15(水) 21:28:42.61ID:RdmQ7I01
調べてみたらコンテキストスイッチにもプロセスコントキストスイッチとスレッドコンテキストスイッチがあって、
後者の方がコストが格段に低いとありました。
この場合は同一プロセス中の複数スレッドで後者なので、
>>200さんの言っていることもありますし、コア数よりスレッド数を少し多めに設定しても速くなるのかもしれませんね。
実験して確かめるのが一番かもですね。
2022/06/15(水) 21:38:32.69ID:vqdnmmaI
まあ今の実装は大抵スレッドといいつつプロセスだったりするけどね
203デフォルトの名無しさん
垢版 |
2022/06/15(水) 22:07:11.11ID:Ltc382Vw
>>202
何の話だ?
2022/06/15(水) 22:21:16.61ID:5/k7QI1P
pythonはそんな感じがする
205デフォルトの名無しさん
垢版 |
2022/06/15(水) 22:28:16.78ID:Ltc382Vw
pythonでもマルチスレッドとマルチプロセッシングは別物だろが
2022/06/15(水) 22:34:39.36ID:Z7kfo4VR
Linuxのスレッドはプロセスだと聞いた
2022/06/15(水) 22:56:22.65ID:VY0KZJ3n
そのへんは色んな論が合って今の主流がどうなってんのかよくわからん。
でも一度はプロセスを軽くする方向 (スレッドの実態をプロセスとする方向) になったというのは私も聞いたことがあるような気がする。
(BSD 系の話と混ざってるような気もする。 だいぶんうろ覚え。)
プロセスを軽くするというよりは段階を分けるというか、
プロセスをスレッド的な範囲で使っている分にはスレッド程度の処理しかしないみたいな感じ。
ただ、それは最終的には管理コストが思ったより大きくてそれほど効果的ではないというオチじゃなかったっけ?
2022/06/15(水) 23:10:10.79ID:vqdnmmaI
>>203
OSのカーネルスレッドの実装の話だ
209デフォルトの名無しさん
垢版 |
2022/06/15(水) 23:14:22.38ID:8Ciw/luQ
forkもCoWがあるからオーバーヘッド大したことないんだっけ?
2022/06/16(木) 06:09:16.40ID:acnLqVz4
>>206
誰に聞いたんだよw
てか、少しは疑うことを覚えた方がいいぞ

>>208
ソース出してみ

>>209
Copy on writeを使わない実装よりは大幅に軽いけどメモリー空間とかを準備しなくて済むスレッドよりは重いよ
2022/06/16(木) 06:36:56.71ID:GA9mXaJg
>>205
そうだった。勘違いしてた。
pythonで流行りの並列処理をやろうとしたらマルチプロセスだった。何を言ってるのか わからねーと思うが(以下略)
2022/06/16(木) 07:01:31.35ID:ilsRfae9
>>199
ユニプロセッサでも例えばI/O待ちやユーザ入力待ちしている間にできることをやっとくんだよ
213デフォルトの名無しさん
垢版 |
2022/06/16(木) 07:17:28.07ID:lg2Mpz7e
例えばシングルスレッドのみを利用のサーバーでも
その中で非同期タスクを1万個動かしてクライアント同時接続1万個の処理が可能
ほとんどがネットワーク待ちとディスク待ちだから非同期ならばそれだけ同時に並行処理(≠並列処理)できる
214デフォルトの名無しさん
垢版 |
2022/06/16(木) 07:30:29.25ID:lg2Mpz7e
もし同期プログラミングしか出来ないと
その多数のクライアントを捌くためにスレッド数を増やすことで対応することになるが
スレッドリソースを喰うため大きいためスレッド数を増やせず
スレッドスイッチングも重いため圧倒的に不利となってしまう
2022/06/16(木) 08:51:16.63ID:ilsRfae9
ネットのサーバーは本質的にマルチタスクで
たとえシングルで力技かましてても外から見て複数のタスクを同時にこなしている
2022/06/16(木) 09:12:07.56ID:LWbVArCN
1対1スレッドがマルチプロセッサ使えて実装が楽で悪いことないよね
217デフォルトの名無しさん
垢版 |
2022/06/16(木) 09:53:32.18ID:JxXqg7BH
>>216
それは初心者まで
普通は非同期に処理する
2022/06/16(木) 10:11:35.67ID:LWbVArCN
>>217
非同期のスレッドってどういうのを指すの?
2022/06/16(木) 11:53:53.45ID:ilsRfae9
マルチスレッドは基本的に非同期だけどな
必要に応じてミューテックスやシグナルで待ち合わせする
2022/06/16(木) 16:20:36.89ID:OqC2jk+r
ノンブロッキング=非同期でいいのかな
2022/06/16(木) 16:31:27.35ID:WGtrzJPY
いいよ違うけど
2022/06/16(木) 17:24:48.01ID:Vxm/sO96
しかしまあどこかにライブラリを作ってる人がいるんだけど、その事実を認識できんプログラマというのはおるよな
2022/06/16(木) 17:38:45.90ID:5Mp0JkOM
ジャップにはOSS読んだり一次情報確認しにいく文化がそもそも無いからな
224デフォルトの名無しさん
垢版 |
2022/06/16(木) 17:39:26.55ID:T9ZCQ85W
非同期プログラミングでは多くの言語でPromiseもしくはFutureと呼ばれる同じ概念の抽象化を用いて行なう
つまりこれから行われることを期待する未来の約束という抽象化したものに次々と託していくことで
プログラムコードの見かけ上の記述順とは異なり並行して非同期に複数のタスクが走ることで非常に効率的に実行
それらは一つのスレッド内で何十も何千も非同期に並行して動かすことが可能であるがマルチスレッドを使えばさらにそのコア数倍を動かせる

>>216
それだと効率が悪すぎてお子様向け
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況