次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part134
http://mevius.5ch.net/test/read.cgi/tech/1516406742/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part135
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fcb-q1Nq)
2018/03/31(土) 20:20:06.25ID:o3PNwIlC0174はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-ycE0)
2018/04/15(日) 23:53:07.49ID:aQ0USPFo0175デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 00:28:23.74ID:TXxoP4/a0 unix domain ソケットがお手軽で便利だけど
時代に合わせてパイプか tcp かなあ
Windows でしか使わないならならcom使うのも簡便
時代に合わせてパイプか tcp かなあ
Windows でしか使わないならならcom使うのも簡便
176デフォルトの名無しさん
2018/04/16(月) 01:39:01.50 共有メモリだとリングバッファとか排他とか自分で作り込まなきゃいけんやろ
ソケットならそのへん考えなくてええやん
ソケットならそのへん考えなくてええやん
177デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/16(月) 02:21:40.05ID:kGNRvKds0 windowsはファイルマッピングオブジェクトでしょ
パイプでさえSYNCHRONIZE特権指定できないゴミなんだから
パイプでさえSYNCHRONIZE特権指定できないゴミなんだから
178デフォルトの名無しさん (ワッチョイ bf7e-ULsc)
2018/04/16(月) 03:12:35.45ID:HsbFINqV0 標準入出力最強説
179デフォルトの名無しさん (ドコグロ MMdf-fgqO)
2018/04/16(月) 06:43:39.39ID:kK8liqj6M unix domain socket なんて使ったことないな
名前空間としてファイルの指定がいるし将来違うマシン間で動作させる時に変更量が多いしtcp/udpに比べてデメリット多くね?
名前空間としてファイルの指定がいるし将来違うマシン間で動作させる時に変更量が多いしtcp/udpに比べてデメリット多くね?
180デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 07:06:03.32ID:irvwqMpDa >>173,174
共有メモリは例えば/dev/shmのRAM領域にあるメモリマップですよね
同一PC内のソケットのボーレートってほぼクロック数なんですか?
同一PC内の通信であったとしてもネットワークドライバの実装するプロトコルスタックを経由してしまうので、
その分のオーバーヘッドの分だけ速度が落ちる、という解釈ですが
共有メモリは例えば/dev/shmのRAM領域にあるメモリマップですよね
同一PC内のソケットのボーレートってほぼクロック数なんですか?
同一PC内の通信であったとしてもネットワークドライバの実装するプロトコルスタックを経由してしまうので、
その分のオーバーヘッドの分だけ速度が落ちる、という解釈ですが
181デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 07:17:01.48ID:irvwqMpDa iperfとかで同一PC内で速度測ったらどれくらいいきます?
(1Gbpsな気が)
(1Gbpsな気が)
182デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 08:09:11.43ID:TXxoP4/a0183デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 08:09:52.14ID:TXxoP4/a0 >>180
あなた知識が色々おかしいので何も考えずに教えられたとおりにした方が良いですよ
あなた知識が色々おかしいので何も考えずに教えられたとおりにした方が良いですよ
184デフォルトの名無しさん (ワッチョイ ff23-ImQH)
2018/04/16(月) 12:07:30.90ID:1SlhlQTu0 昨日の安全確保支援士の試験にC++が出ていたが、メンバ変数にm_が付いていた。
さすがにポインタのpなどは付いていないが、ちょっと意外だった。
さすがにポインタのpなどは付いていないが、ちょっと意外だった。
185デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 18:56:27.96ID:aeexu7jXa >>183
同一PCのTCP通信はどういう経路通るの?
同一PCのTCP通信はどういう経路通るの?
186デフォルトの名無しさん (ブーイモ MMff-LJHW)
2018/04/16(月) 20:00:43.80ID:Iff3OzVTM クライアント→OS→サーバかその逆
187デフォルトの名無しさん (ワッチョイ f349-ycE0)
2018/04/17(火) 17:50:44.77ID:YRsoLN600 未だにシステムハンガリアンなやつみたいに変なのとも
うまく付き合うのがC++使いのスキルの1つだかんね
うまく付き合うのがC++使いのスキルの1つだかんね
188デフォルトの名無しさん (ワッチョイ ffbd-zmT2)
2018/04/18(水) 00:38:34.88ID:1Mo3YyI90 ↑ボゾビット
189デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/18(水) 02:18:47.96ID:whM0Cl8U0 Windowsのネットワーク関係APIはkernel内に実装されていない
後は判るな?
後は判るな?
190デフォルトの名無しさん (ワッチョイ 135b-ycE0)
2018/04/18(水) 07:02:39.34ID:bX/oR0u10 ネットワーク関係に限らずAPIはすべてサブシステムだね
191デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/20(金) 23:48:17.59ID:MBksKo4b0 class Sample{
private:
const double val{0.0}
public:
void set(double v){
static_cast<double>(this->val) = v;
}
};
VS2015での話なのですが、こんな感じのコードを先日見かけまして
static_castでメンバ変数のconst外しができているように見えるのですけど、この動作は合法なものなのでしょうか?
試しにwandboxのclang 7.0で試して見た所当然のようにコンパイルエラーになったのですが・・・
private:
const double val{0.0}
public:
void set(double v){
static_cast<double>(this->val) = v;
}
};
VS2015での話なのですが、こんな感じのコードを先日見かけまして
static_castでメンバ変数のconst外しができているように見えるのですけど、この動作は合法なものなのでしょうか?
試しにwandboxのclang 7.0で試して見た所当然のようにコンパイルエラーになったのですが・・・
192はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/21(土) 00:23:55.79ID:7j/Wt31X0193デフォルトの名無しさん (ワッチョイ e3b3-ey0r)
2018/04/21(土) 00:37:31.88ID:WobodGQW0 const char *a = "hoge";
const char *b = "hoge";
この2つのポインタがa == bになることは保障されていますか?
const char *b = "hoge";
この2つのポインタがa == bになることは保障されていますか?
194デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/21(土) 00:42:18.95ID:F9SE4HSu0 ない
195デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/21(土) 00:47:40.36ID:5uFute1E0 >>192
やっぱりそうですよね、何か特別な動作かとも思ったのですがVC++のバグか仕様なんですね・・・
やっぱりそうですよね、何か特別な動作かとも思ったのですがVC++のバグか仕様なんですね・・・
196デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 06:06:21.46ID:pETeS31u0 >>191
VS2017では警告されるぞ(おそらくVS2015でも)
cl 191.cpp /c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.13.26129 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
191.cpp
191.cpp(7): warning C4213: 非標準の拡張機能が使用されています: 左辺値でキャストしました。
後はわかるな?
VS2017では警告されるぞ(おそらくVS2015でも)
cl 191.cpp /c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.13.26129 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
191.cpp
191.cpp(7): warning C4213: 非標準の拡張機能が使用されています: 左辺値でキャストしました。
後はわかるな?
197デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/21(土) 06:22:18.02ID:wsxrLs1Z0 ポインタや参照のconst外しは合法だが
なぜ合法なのか(合法にせざるを得なかったのか)というとmemory aliasing状況下での最適化の限界に関する
ラクダ本ばりに長い議論を要する
悪寒、
プログラミング言語C++か何かでは古いライブラリのconst付け忘れにコード修正無しで対応できるYO!みたいな簡単な説明しかないが
しかし左辺値のキャストというのはどうなの?
なぜ合法なのか(合法にせざるを得なかったのか)というとmemory aliasing状況下での最適化の限界に関する
ラクダ本ばりに長い議論を要する
悪寒、
プログラミング言語C++か何かでは古いライブラリのconst付け忘れにコード修正無しで対応できるYO!みたいな簡単な説明しかないが
しかし左辺値のキャストというのはどうなの?
198デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/21(土) 08:02:29.99ID:POwjcYl50 static_cast<double>(this->val)自体は合法でしょ
this->valと同じ値のdouble一時オブジェクトができるだけ
おかしいのはそれに代入してること
this->valと同じ値のdouble一時オブジェクトができるだけ
おかしいのはそれに代入してること
199デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 11:34:19.85ID:pETeS31u0 int x;
(float&)x = 1;
(float&)x = 1;
200デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 11:34:55.76ID:pETeS31u0 途中で書き込まれてしまった
int x;
(float&)x = 1; //well-formed
(float )x = 1; //ill-formed
int x;
(float&)x = 1; //well-formed
(float )x = 1; //ill-formed
201デフォルトの名無しさん (アウアウカー Sa43-gLlN)
2018/04/22(日) 17:24:24.80ID:RLzEBpTGa std:stringを引数や戻り値で使う場合、値渡しでも大丈夫ですか?
202デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 17:29:11.38ID:xCJicIF50 大丈夫
203デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 18:29:08.58ID:i5tL4+9s0 stringは内部に参照カウンタを保持した共有リファレンサを持っているから&&使用せずに直で渡しても特に副作用もなく何の問題もないよ
204デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 18:53:47.99ID:cFbiqY2T0 今どきのstringはヒープじゃなくスタックを使ったりもするね
鬼のように最適化されている
鬼のように最適化されている
205デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 19:26:19.72ID:xCJicIF50 >>203
おじいちゃんそれ大昔の話ですよ
おじいちゃんそれ大昔の話ですよ
206デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 19:52:27.54ID:i5tL4+9s0207デフォルトの名無しさん (アウアウカー Sa43-gLlN)
2018/04/22(日) 20:00:35.45ID:pGMCB93ha ありがとうございます
勝手にデストラクタでdeleteされるとか色々考えていましたがそこは先人たちが考慮して作られているのですね
勝手にデストラクタでdeleteされるとか色々考えていましたがそこは先人たちが考慮して作られているのですね
208デフォルトの名無しさん (ブーイモ MMba-BC+p)
2018/04/22(日) 20:19:16.41ID:5qvptAAaM いやいや老害に騙されちゃだめですよ。
参照カウントなstringは大昔に禁止されているので、ちゃんと参照や右辺値渡等を使いましょう
参照カウントなstringは大昔に禁止されているので、ちゃんと参照や右辺値渡等を使いましょう
209デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 20:23:51.32ID:M8qmSLCN0210デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/22(日) 20:58:25.32ID:ltJDDxzZ0 COWなstringは効率が悪くてマルチスレッドとの相性が最悪なのでとっくの昔に打ち捨てられました
規格のCOW実装許容するための記述はC++11でバッサリ捨てられました
今はCOWは規格違反です
規格のCOW実装許容するための記述はC++11でバッサリ捨てられました
今はCOWは規格違反です
211デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 21:39:50.50ID:M8qmSLCN0 なん…だと!?
212デフォルトの名無しさん
2018/04/22(日) 21:51:37.63 おじいちゃんw
213デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/22(日) 21:54:34.58ID:w7SgV4Bf0 値渡しや戻り値で戻せることと、
std::string内部での(ヒープ)メモリ管理の詳細は関係なくね??
引数や戻り値としてスタックに構造体を積めるようになった時点で値渡しや戻り値で戻せることとはほぼ自明
(よほど変なコピコンを定義してコピーをわざと不首尾に終わらせない限りそれはできる
std::string内部での(ヒープ)メモリ管理の詳細は関係なくね??
引数や戻り値としてスタックに構造体を積めるようになった時点で値渡しや戻り値で戻せることとはほぼ自明
(よほど変なコピコンを定義してコピーをわざと不首尾に終わらせない限りそれはできる
214デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 23:24:42.33ID:xCJicIF50 >>213
まあそうだけれど無駄なコピーはなるべく避けましょうということで
まあそうだけれど無駄なコピーはなるべく避けましょうということで
215デフォルトの名無しさん (ワッチョイ 9ab3-bxMY)
2018/04/22(日) 23:50:24.01ID:usC+gOtq0 今時のコンパイラは、そこらの人間よりよっぽど高度な最適化をするから、素直で単純なコードを書くと速くなる。
効率化するつもりで余計なことをすると、コンパイラの最適化を妨げて、かえって効率が落ちたりする。
本当に重要な部分は実測しながら試行錯誤、それ以外はできるだけ素直なコードを書く、ってあたりが基本。
効率化するつもりで余計なことをすると、コンパイラの最適化を妨げて、かえって効率が落ちたりする。
本当に重要な部分は実測しながら試行錯誤、それ以外はできるだけ素直なコードを書く、ってあたりが基本。
216デフォルトの名無しさん (ワッチョイ 7acb-462F)
2018/04/23(月) 01:28:01.46ID:C1tu+nEe0 stringを値渡しせずにconst参照等々で渡すことはc++の基本なので、素直で単純なコードの部類に入ると思うが。
217デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 01:32:17.81ID:Lxhtz3Yj0 って、あたりが基本(`・ω・´)キリッ
道化かw
道化かw
218デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 01:37:49.36ID:voecBiJS0 先生!OpenMPへの展開も自動でやってくれるんですか?
219デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 01:46:26.60ID:Lxhtz3Yj0 値渡しを素直なコードとか言う人って他人の書いたコード読まないんだろうな
宿題以外で何か書いたことあるのか
宿題以外で何か書いたことあるのか
220デフォルトの名無しさん (ワッチョイ db2d-tR7F)
2018/04/23(月) 02:04:07.25ID:SgzxVTg+0 const type &
221デフォルトの名無しさん (ワッチョイ 9ab3-bxMY)
2018/04/23(月) 04:33:47.47ID:WjBjSqCj0 const参照渡しが基本だったのって C++11 以前の世界の話だよね…
幸い、近頃はそんなコードをあまり読まずに済んでるけど。
余計なことをしない、ってのが大事なんだよ。
参照でなきゃいけない理由がなければ、参照を使うべきじゃないんだ。
幸い、近頃はそんなコードをあまり読まずに済んでるけど。
余計なことをしない、ってのが大事なんだよ。
参照でなきゃいけない理由がなければ、参照を使うべきじゃないんだ。
222デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/23(月) 06:33:47.30ID:awXEdMZR0 どこの世界に生きてる人?
223デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 07:20:47.54ID:voecBiJS0 どんな作品を作っているのかなぁ?
224デフォルトの名無しさん (ワッチョイ 4ecc-KT7J)
2018/04/23(月) 08:32:33.12ID:EDVnvY5w0 初心者です。
今書いてるプログラムをコンパイルして実行すると、エラーが出たり出なかったり謎の挙動を起こします
最初はエラーが出て、その後数回、コードを一切変えずコンパイルしなおして実行すると急にエラーが出ず上手く行ったりします。
これって何が原因なのでしょうか…
こういう事ってよくあるのですか?
今書いてるプログラムをコンパイルして実行すると、エラーが出たり出なかったり謎の挙動を起こします
最初はエラーが出て、その後数回、コードを一切変えずコンパイルしなおして実行すると急にエラーが出ず上手く行ったりします。
これって何が原因なのでしょうか…
こういう事ってよくあるのですか?
225デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 08:34:14.27ID:Lxhtz3Yj0 キチガイ発言はツイッターかブログでどうぞ
226デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 08:35:11.51ID:Lxhtz3Yj0227デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 10:17:10.24ID:Hh6TN2Aq0 >>224
そのエラーとやら、もしかして警告か?
エラーは直すまで何度コンパイルしても絶対に通らない
警告はコンパイルが完了しオブジェクトファイルができる
そのコンパイルとやら、もしかしてビルドか? それともmakeか?
ビルドやmakeはオブジェクトファイルとソースファイルの日付を比較して
ソースファイルのほうが古いとコンパイルを省く
だから警告が出てからもう一度ビルドしても同じ警告は出ない
おそらく、こういうことだと見受ける
そのエラーとやら、もしかして警告か?
エラーは直すまで何度コンパイルしても絶対に通らない
警告はコンパイルが完了しオブジェクトファイルができる
そのコンパイルとやら、もしかしてビルドか? それともmakeか?
ビルドやmakeはオブジェクトファイルとソースファイルの日付を比較して
ソースファイルのほうが古いとコンパイルを省く
だから警告が出てからもう一度ビルドしても同じ警告は出ない
おそらく、こういうことだと見受ける
228デフォルトの名無しさん (ワッチョイ 237f-9jjH)
2018/04/23(月) 10:24:23.61ID:48PNhEnX0 変数を初期化してないんだろ
229デフォルトの名無しさん (ドコグロ MM83-cuLp)
2018/04/23(月) 12:27:19.92ID:8odlZZv8M230デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 13:44:26.09ID:Hh6TN2Aq0 >>229
日本語でしゃべってくれ
日本語でしゃべってくれ
231デフォルトの名無しさん (ワッチョイ 5b9b-Th9u)
2018/04/23(月) 13:58:46.97ID:1JtTwXqR0 実行してるということはコンパイルは通ってるということだと思う
つまりコンパイルの問題ではなく、コンパイルエラーではないだろうという推測
つまりコンパイルの問題ではなく、コンパイルエラーではないだろうという推測
232デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 13:58:59.41ID:Lxhtz3Yj0233デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 14:45:37.00ID:Hh6TN2Aq0 初心者つってるから
どこまでがコンパイルで
どこからが実行なのかの
区別からあやしいと見ている
実行時エラーにしても
stopダイアログなのか
結果がおかしいのか
あの質問では言ってない
どこまでがコンパイルで
どこからが実行なのかの
区別からあやしいと見ている
実行時エラーにしても
stopダイアログなのか
結果がおかしいのか
あの質問では言ってない
234デフォルトの名無しさん (ワッチョイ 237f-9jjH)
2018/04/23(月) 14:53:14.79ID:48PNhEnX0 すげーみっともない奴だな
235デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 14:56:19.11ID:Hh6TN2Aq0 嘘は言っていない
236デフォルトの名無しさん (スプッッ Sd5a-wmjz)
2018/04/23(月) 15:52:04.86ID:mDBTWEJod 言論の自由を行使し過ぎw
237デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/23(月) 16:27:46.06ID:So2OBlKcd コンパイルして(リンクを)実行すると
だったりして
だったりして
238デフォルトの名無しさん (ワッチョイ db2d-tR7F)
2018/04/23(月) 17:14:12.91ID:VArh9qU+0 初心者がいちいちobjからリンクしてるのか
239デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 17:15:44.11ID:Hh6TN2Aq0 しつけえな
ここはプログラム技術板
技術的な内容が皆無のレスでひっ絡んでくるなカス
ここはプログラム技術板
技術的な内容が皆無のレスでひっ絡んでくるなカス
240デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 17:30:01.10ID:orIXCmni0241デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 17:32:39.31ID:orIXCmni0 あ、初心者だったのか…
242デフォルトの名無しさん (ワッチョイ ba60-Mp6C)
2018/04/23(月) 17:34:51.03ID:vGDXyrLu0243デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/23(月) 21:12:48.39ID:7US5BnQm0 pthread を使ってループ処理をマルチスレッド化したのですが、シングルスレッドと同じスピードしか出ませんでした。
pthread でこういう事やっても無駄なんでしょうか?
pthread でこういう事やっても無駄なんでしょうか?
244デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/23(月) 22:04:36.67ID:C1tu+nEe0 流石に情報が少なすぎて
このままだと下手糞としか言いようがない。
ソースコード貼り付けれ
このままだと下手糞としか言いようがない。
ソースコード貼り付けれ
245デフォルトの名無しさん (ワッチョイ fa4c-+Cft)
2018/04/23(月) 22:09:13.69ID:oFP/MhUD0 シングルコアのPCかも
246デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 22:17:20.63ID:1ikED9ud0 pthread使うとひとつの処理が倍速にでもなると思ったのだろうか
247片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/23(月) 22:21:51.35ID:ATy8dQXfd 不完全な質問はスルーすっと
248デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/23(月) 22:42:58.69ID:7US5BnQm0 舌足らずですみません。コードはこんな感じです。
threadFunctionは単なる加算値、joinFunctionは集計処理です。
コアは物理2論理4です。
template< class ArgType >
void Reduce( std::vector< ArgType >& threadArgs, void* (*threadFunction)(void*), void (*joinFunction)(std::vector< ArgType >&) )
{
const size_t threadCount = threadArgs.size();
threads.resize( threadCount );
std::vector< void* > voidPtrArgs = CastArgsToVoidPtrs( threadArgs );
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
sched_param schedParam;
schedParam.sched_priority = sched_get_priority_max( SCHED_FIFO );
pthread_attr_t threadAttribute;
pthread_attr_init( & threadAttribute );
pthread_attr_setschedpolicy( & threadAttribute, schedPolicy );
pthread_attr_setinheritsched( & threadAttribute, PTHREAD_EXPLICIT_SCHED );
pthread_t& thread = threads[ threadIndex ];
pthread_setschedparam( thread, schedPolicy, & schedParam );
pthread_create( & thread, & threadAttribute, threadFunction, voidPtrArgs[ threadIndex ] );
}
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
pthread_t thread = threads[ threadIndex ];
pthread_join( thread, NULL );
}
joinFunction( threadArgs );
}
threadFunctionは単なる加算値、joinFunctionは集計処理です。
コアは物理2論理4です。
template< class ArgType >
void Reduce( std::vector< ArgType >& threadArgs, void* (*threadFunction)(void*), void (*joinFunction)(std::vector< ArgType >&) )
{
const size_t threadCount = threadArgs.size();
threads.resize( threadCount );
std::vector< void* > voidPtrArgs = CastArgsToVoidPtrs( threadArgs );
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
sched_param schedParam;
schedParam.sched_priority = sched_get_priority_max( SCHED_FIFO );
pthread_attr_t threadAttribute;
pthread_attr_init( & threadAttribute );
pthread_attr_setschedpolicy( & threadAttribute, schedPolicy );
pthread_attr_setinheritsched( & threadAttribute, PTHREAD_EXPLICIT_SCHED );
pthread_t& thread = threads[ threadIndex ];
pthread_setschedparam( thread, schedPolicy, & schedParam );
pthread_create( & thread, & threadAttribute, threadFunction, voidPtrArgs[ threadIndex ] );
}
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
pthread_t thread = threads[ threadIndex ];
pthread_join( thread, NULL );
}
joinFunction( threadArgs );
}
249デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 22:45:44.01ID:reOPAGg30250デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 22:51:38.20ID:reOPAGg30251デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 22:53:42.39ID:voecBiJS0 釣り針デカいな
252デフォルトの名無しさん (ワッチョイ 2304-+3cQ)
2018/04/23(月) 23:14:39.42ID:gZ/aKTVF0 いまだに関数ポインタ使ってるのか。野蛮人。
std::functionってスレッドセーフじゃないの?
std::functionってスレッドセーフじゃないの?
253デフォルトの名無しさん (ワッチョイ 1a68-Mp6C)
2018/04/23(月) 23:18:02.49ID:YIxEn5Qs0 いまだ関数ポインタが使いこなせないんだけどやばいかな?
254デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 23:20:18.71ID:reOPAGg30 考えたらjoinの問題じゃないか
もし「単なる加算処理」が1スレッドでメモリ帯域使い潰していたらマルチスレッドにしてもどうしようもないのは明らかだよ
もし「単なる加算処理」が1スレッドでメモリ帯域使い潰していたらマルチスレッドにしてもどうしようもないのは明らかだよ
255デフォルトの名無しさん (ワッチョイ 0e8a-fvqh)
2018/04/23(月) 23:21:31.95ID:reOPAGg30 >>253
未だに関数ポインタなんて使ってるほうがやばい
未だに関数ポインタなんて使ってるほうがやばい
256デフォルトの名無しさん (ワッチョイ 5b9b-Th9u)
2018/04/23(月) 23:30:05.62ID:1JtTwXqR0 画像処理で合成処理をパラメータでもらう場合があるんだが
その場合内部処理と対応させるために関数ポインタは使うが
そういうのもダメ?
その場合内部処理と対応させるために関数ポインタは使うが
そういうのもダメ?
257デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 23:35:26.41ID:reOPAGg30 ダメってわけじゃないけどさあw
C++ならもっと柔軟性のあるやりかたが幾らでもあるってこと
C++ならもっと柔軟性のあるやりかたが幾らでもあるってこと
258デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/23(月) 23:36:21.76ID:lnjW6wzS0 virtual関数もラムダ式も関数ポインタ
259デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/23(月) 23:40:33.42ID:awXEdMZR0 std::byteが邪魔すぎるんですけどg++で無効にするオプションってありますかね?
260デフォルトの名無しさん (ブーイモ MM67-BC+p)
2018/04/23(月) 23:50:59.76ID:9sQDUnnSM261デフォルトの名無しさん (ワッチョイ 2304-+3cQ)
2018/04/23(月) 23:51:42.53ID:gZ/aKTVF0262デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/24(火) 00:06:39.75ID:qFc5rpEV0 >>248
threadcountいくつになってるの?
threadcountいくつになってるの?
263はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/24(火) 00:06:56.48ID:VhsA5JFS0 忘れがちなことだが std::function は実行時の型を扱う。
画像処理などのようにヘビーな繰返しがあるような場面では関数ポインタを使った場合との間に深刻な速度差が生じることもなくはない。
画像処理などのようにヘビーな繰返しがあるような場面では関数ポインタを使った場合との間に深刻な速度差が生じることもなくはない。
264デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/24(火) 00:16:24.07ID:qFc5rpEV0 >>248
関数名からして、一度のreduce処理量は大したことなくて、何度も繰り返し呼んでない?
thread処理に必要な処理量が相対的に無視できなくなってるんじゃね?
スレッドは4本に制限して、各スレッドが処理する量を増やすかスレッドプール式にしては?
関数名からして、一度のreduce処理量は大したことなくて、何度も繰り返し呼んでない?
thread処理に必要な処理量が相対的に無視できなくなってるんじゃね?
スレッドは4本に制限して、各スレッドが処理する量を増やすかスレッドプール式にしては?
265デフォルトの名無しさん
2018/04/24(火) 00:17:16.38 C++だから関数ポインタ使わないとか頭おかしい
関数ポインタのほうが高速かつシンプルに書けるならそちらを選択すべき
関数ポインタのほうが高速かつシンプルに書けるならそちらを選択すべき
266デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/24(火) 00:20:31.80ID:N5/L/OXI0 皆富豪ばかりではない
267デフォルトの名無しさん (ワッチョイ 1a12-/G6U)
2018/04/24(火) 00:26:04.88ID:RoXKv00p0 富豪かどうかはおま環だろ
だから自己申告しないヤツが悪い
なんでこっちがエスパーみたいなことしなきゃいけないんだ
わたくしは教えないがあなたがわたしの環境を忖度しろってか?
ヴァカじゃねえの?
アフォに対してちゃあんと「テメーのスペックはいかほどですか」と尋ねろクズ
富豪かどうかはわからない、それを言わない人間がまず間違い、
それを逆手にとって相手をマウンティングするアフォがいるから話が進まない
だから自己申告しないヤツが悪い
なんでこっちがエスパーみたいなことしなきゃいけないんだ
わたくしは教えないがあなたがわたしの環境を忖度しろってか?
ヴァカじゃねえの?
アフォに対してちゃあんと「テメーのスペックはいかほどですか」と尋ねろクズ
富豪かどうかはわからない、それを言わない人間がまず間違い、
それを逆手にとって相手をマウンティングするアフォがいるから話が進まない
268デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/24(火) 00:38:30.68ID:Sy+ZRJzm0 関数ポインタの構文の方がかっこいいだろ!
269デフォルトの名無しさん (ラクッペ MMcb-x+X/)
2018/04/24(火) 00:47:04.42ID:hfyVIq8IM どんなスペックだろうと他のソフトがどれだけメモリや処理時間を喰い潰していようと自分の処理はサクッと終わらせたいといつも思う
270デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 01:40:17.33ID:2n4xWLsG0271デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/24(火) 03:16:15.83ID:CsMI0xmD0 >>248
調べてみたけどさっぱり判りません。
pthread_joinで各スレッドの終了を待って、その後、集計処理をするというのはごく渡り前の処理に見えるのですが、
何が行けないのでしょうか?
別の方法でスレッドの終了を待たねばならないのでしょうか?
自分勝手デスミア線が、具体的に問題点、改善点を指摘して下さいm(_ _)m。
調べてみたけどさっぱり判りません。
pthread_joinで各スレッドの終了を待って、その後、集計処理をするというのはごく渡り前の処理に見えるのですが、
何が行けないのでしょうか?
別の方法でスレッドの終了を待たねばならないのでしょうか?
自分勝手デスミア線が、具体的に問題点、改善点を指摘して下さいm(_ _)m。
272デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 03:31:10.06ID:2n4xWLsG0 いいから「単なる加算処理」全部見せろよこの包茎野郎
273デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/24(火) 03:56:33.85ID:CsMI0xmD0 threadFunctionが、
void* CalcBasicStatics( void* threadArg ) {
BasicStaticsThreadArg* arg = reinterpret_cast< BasicStaticsThreadArg* >( threadArg );
double intervalOfX = arg->intervalOfX;
double x = arg->dividedRangeOfX.start;
double sumOfY = 0.0;
double sampleCount = 0;
const sc::Sampler& f = arg->f;
while ( x <= arg->dividedRangeOfX.end ){
double y = f( x );
sumOfY += y;
sampleCount++;
x += intervalOfX;
}
arg->sumOfY = sumOfY;
arg->sampleCount = sampleCount;
return nullptr;
}
joinFunctionが、
void CalcBasicStaticsJoin( std::vector< BasicStaticsThreadArg >& args ) {
double sampleCount = 0.0;
double sumOfY = 0.0;
for ( int i = 0; i < args.size(); ++I ) {
sumOfY += args[ i ].sumOfY;
sampleCount += args[ i ].sampleCount;
}
for ( int i = 0; i < args.size(); ++i ) { // 結果を書き込み
BasicStaticsThreadArg& arg = args[ i ];
arg.average = sumOfY / sampleCount;
}
}
です。細々すみません。
void* CalcBasicStatics( void* threadArg ) {
BasicStaticsThreadArg* arg = reinterpret_cast< BasicStaticsThreadArg* >( threadArg );
double intervalOfX = arg->intervalOfX;
double x = arg->dividedRangeOfX.start;
double sumOfY = 0.0;
double sampleCount = 0;
const sc::Sampler& f = arg->f;
while ( x <= arg->dividedRangeOfX.end ){
double y = f( x );
sumOfY += y;
sampleCount++;
x += intervalOfX;
}
arg->sumOfY = sumOfY;
arg->sampleCount = sampleCount;
return nullptr;
}
joinFunctionが、
void CalcBasicStaticsJoin( std::vector< BasicStaticsThreadArg >& args ) {
double sampleCount = 0.0;
double sumOfY = 0.0;
for ( int i = 0; i < args.size(); ++I ) {
sumOfY += args[ i ].sumOfY;
sampleCount += args[ i ].sampleCount;
}
for ( int i = 0; i < args.size(); ++i ) { // 結果を書き込み
BasicStaticsThreadArg& arg = args[ i ];
arg.average = sumOfY / sampleCount;
}
}
です。細々すみません。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★2 [BFU★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- ホリエモン、「持ち家=幸せという価値観は過去のもの」と断言「快適な住まいが欲しいなら、賃貸住宅を次々に替えていく」 [muffin★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★3 [Hitzeschleier★]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ2🧪
- 自民党のヒゲ「日本側の無線でcopyとは言ったが了解という意味ではない」 [834922174]
- Chatgptのサムアルトマン、買い占めたメモリを使わず焼却処分「GoogleやClaudeが値上げで買えないようにする」 [347751896]
- 【新番組】轟はじめ🐧⚡のぶんぶんぶーん🚗💨!【🏡】
- ケンモメンってなんでこんなに反日が多いの? [866936191]
- 高市早苗、トランプおやびんに泣きつくwwwwwwwwwwwwwwwwwwwwwwww [834922174]
