次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137
https://mevius.5ch.net/test/read.cgi/tech/1531558382/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
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++相談室 part137
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 12c3-4saf)
2018/08/27(月) 16:02:00.94ID:vY3QDx2y0264デフォルトの名無しさん (ブーイモ MM97-M35H)
2018/09/06(木) 18:25:26.14ID:c/F3wcvdM >>263
関数内の最適化のみで考えればいいだけなんだからきりはあるだろ
つまりインライン展開なし、LOTなし
ABIを意識するのは全然特殊じゃない
言語間のよびだしはざらだし、
クラッシュダンプにスタックトレース残すためにあえてインライン抑制したりする
お前が経験不足なだけだよ
関数内の最適化のみで考えればいいだけなんだからきりはあるだろ
つまりインライン展開なし、LOTなし
ABIを意識するのは全然特殊じゃない
言語間のよびだしはざらだし、
クラッシュダンプにスタックトレース残すためにあえてインライン抑制したりする
お前が経験不足なだけだよ
265はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/06(木) 18:41:01.02ID:IzfX8EX20 >>264
そっちの脳内でどんな前提を置いてるかなんて知らんがな。
そっちの脳内でどんな前提を置いてるかなんて知らんがな。
266デフォルトの名無しさん (ブーイモ MM97-M35H)
2018/09/06(木) 19:48:52.61ID:c/F3wcvdM >>265
コテハンの割に薄いやつだ
もとの質問は関数から値の返し方についてどちらが速いかという質問なんだから、
関数のインライン展開がないと仮定すれば、定性的に答えられる問いだ
かつその仮定は別に現実ばなれしてるわけでもない
それをお前はその知識が有用であることも知らずに考えるだけ無駄とかぶったぎってるわけだ
このスレは相談室
無駄なのはそういうお前の存在ではとおれは思うわけ
コテハンの割に薄いやつだ
もとの質問は関数から値の返し方についてどちらが速いかという質問なんだから、
関数のインライン展開がないと仮定すれば、定性的に答えられる問いだ
かつその仮定は別に現実ばなれしてるわけでもない
それをお前はその知識が有用であることも知らずに考えるだけ無駄とかぶったぎってるわけだ
このスレは相談室
無駄なのはそういうお前の存在ではとおれは思うわけ
267デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/06(木) 20:12:24.70ID:64ZwjQvb0 malloc()したヒープはfree()解放するのは当然
ウンコしたあと水で流さないぐらい行儀が悪い
ウンコしたあと水で流さないぐらい行儀が悪い
268デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 20:23:27.14ID:itCyrIVk0 メモリーリークは基本的に自分でNEWすることで起こる。
最近のC++では基本的に自分でNEWすることはほとんどない。
動的なメモリが欲しければvectorを使う。
後は、ポインタにインスタンスを確保しないで関数に投げるとかもやってはいけない。メモリを破壊することになる。
あと、どうしてもnewが必要だったりGCが必要な時はスマポを使う。
そういう作法でやると、ユーザーコードでnewすることはほぼない。
最近のC++では基本的に自分でNEWすることはほとんどない。
動的なメモリが欲しければvectorを使う。
後は、ポインタにインスタンスを確保しないで関数に投げるとかもやってはいけない。メモリを破壊することになる。
あと、どうしてもnewが必要だったりGCが必要な時はスマポを使う。
そういう作法でやると、ユーザーコードでnewすることはほぼない。
269デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 20:47:20.81ID:itCyrIVk0 えーっと、関数にポインタを投げる時はその関数の仕様を精査して扱わないとほんとやばい。
270デフォルトの名無しさん (ワッチョイ ba34-uOrU)
2018/09/06(木) 21:04:04.33ID:bw6Oo6uj0 newとdeleteを使いこなせない補助輪付C++グラマってのも問題だけど
271デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/06(木) 21:10:02.71ID:iyjSCMca0 スマポはGCじゃねえよ ぼけ
272デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:14:09.31ID:itCyrIVk0 shared_pointerは参照カウントっていうGC機構ですよ?
273デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:17:21.85ID:itCyrIVk0274デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:18:00.66ID:itCyrIVk0275デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/06(木) 21:18:22.90ID:iyjSCMca0 CGってそもそも何だ?
アプリが「今、解放しろ」というタイミングで動くのをGCというならfreeもGCだぞ
アプリが「今、解放しろ」というタイミングで動くのをGCというならfreeもGCだぞ
276デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/06(木) 21:20:24.16ID:64ZwjQvb0 いつ解放されるか分からないとか
そもそもオブジェクトの外部でポインタの生存期間を制御できてないコードがヤバイわ
そもそもオブジェクトの外部でポインタの生存期間を制御できてないコードがヤバイわ
277デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:24:58.09ID:itCyrIVk0 >>275
そういう、広義解釈は話題が滅茶苦茶になるのでやめましょう。
GCはガベージコレクションだよ。freeは解放関数だよ。
シェアードポインターの解放タイミングは普通コントールしないのでGCだと思ってます。
というか、開放タイミングが未定だからシェアードポインタ使うんじゃないですか?
そういう、広義解釈は話題が滅茶苦茶になるのでやめましょう。
GCはガベージコレクションだよ。freeは解放関数だよ。
シェアードポインターの解放タイミングは普通コントールしないのでGCだと思ってます。
というか、開放タイミングが未定だからシェアードポインタ使うんじゃないですか?
278デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:27:59.96ID:itCyrIVk0 それは全能でないとバグが出ちゃうのでこういう機構が発明されました。
書くときは大まかには寿命は把握しているとは思うのですが、細部までは精査しないことが多いんじゃないでしょうか。
自分のクローンに共有オブジェクトを持たせるときとか普通に書くと滅茶苦茶大変ですよ?
書くときは大まかには寿命は把握しているとは思うのですが、細部までは精査しないことが多いんじゃないでしょうか。
自分のクローンに共有オブジェクトを持たせるときとか普通に書くと滅茶苦茶大変ですよ?
279デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/06(木) 21:37:24.49ID:iyjSCMca0280デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:38:17.39ID:itCyrIVk0281デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:41:02.92ID:itCyrIVk0 >>279
複数の共有がある場合、一個のデストラクタが走った程度では解放されませんよ?
freeは別にデストラクタに仕込む必要ないじゃないですか。
それと、複数の共有がある場合適切にfreeできますか?
複数の共有がある場合、一個のデストラクタが走った程度では解放されませんよ?
freeは別にデストラクタに仕込む必要ないじゃないですか。
それと、複数の共有がある場合適切にfreeできますか?
282デフォルトの名無しさん (ブーイモ MM97-A2Qj)
2018/09/06(木) 21:42:45.15ID:JT+LXegNM コレクションしてないのになんでgcなんだよ。アホすぎる
283デフォルトの名無しさん (ワッチョイ ba34-uOrU)
2018/09/06(木) 21:43:23.10ID:bw6Oo6uj0 シェアードはマルチタスクには不向きだし
284デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:49:40.12ID:itCyrIVk0 コレクションサイズが1のコンテナはないのですね。まぁ、冗談は置いといて。
物事を知ってるなら後は任せました。無知でごめんなさい。
物事を知ってるなら後は任せました。無知でごめんなさい。
285デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 21:51:04.10ID:itCyrIVk0 >>272
参照カウンタは普通GCに含めないのでは?
参照カウンタは普通GCに含めないのでは?
287デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 22:02:22.60ID:itCyrIVk0 https://ja.wikipedia.org/wiki/参照カウント
こういう記事を見つけました。
こういう記事を見つけました。
288デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 22:04:19.65ID:itCyrIVk0 ホントお前ら人殺すことばっか考えてるよな。
そういうのは良いから初心者殺すのマジやめて。
そういうのは良いから初心者殺すのマジやめて。
289デフォルトの名無しさん (ワッチョイ 27bd-A2Qj)
2018/09/06(木) 22:04:41.28ID:vgkXomJH0 gcの一実装として参照カウンタ方式があるだけで、スマポはgcじゃない。
290デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 22:06:33.66ID:itCyrIVk0 それならそれでいいです。
291デフォルトの名無しさん (ワッチョイ 13b3-7GfT)
2018/09/06(木) 23:18:28.17ID:8cSq8zHP0292デフォルトの名無しさん (オイコラミネオ MM53-EsDf)
2018/09/06(木) 23:34:23.61ID:3bNAvGWPM293デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/06(木) 23:34:43.07ID:itCyrIVk0 >>289
スマートポインターのうち std::shared_ptr は参照カウンタを内蔵しているのだから
@参照カウンタが GC、故に、std::shared_ptr も GC
A参照カウンタが GC でない、故に、std::shared_ptr は GC でない
@Aのどちらかしかない
参照カウンタが GC なのにスマートポインタが GC でない、というのは矛盾しているのでは?
私は「参照カウンタは GC じゃない」と思う
スマートポインターのうち std::shared_ptr は参照カウンタを内蔵しているのだから
@参照カウンタが GC、故に、std::shared_ptr も GC
A参照カウンタが GC でない、故に、std::shared_ptr は GC でない
@Aのどちらかしかない
参照カウンタが GC なのにスマートポインタが GC でない、というのは矛盾しているのでは?
私は「参照カウンタは GC じゃない」と思う
295デフォルトの名無しさん (ワッチョイ 13b3-7GfT)
2018/09/06(木) 23:48:27.91ID:8cSq8zHP0296デフォルトの名無しさん (ワッチョイ ef02-A2Qj)
2018/09/06(木) 23:52:47.61ID:HW23dE280 >>294
なにも矛盾してないよ。
GCの一実装として参照カウント方式を使ったものがある。
スマホの中に参照カウントを使ったものがある。
だからといってGC=スマポじゃない。
エンジンで走る車があって、エンジンで飛ぶ飛行機があっても、車は飛行機じゃないのと一緒
なにも矛盾してないよ。
GCの一実装として参照カウント方式を使ったものがある。
スマホの中に参照カウントを使ったものがある。
だからといってGC=スマポじゃない。
エンジンで走る車があって、エンジンで飛ぶ飛行機があっても、車は飛行機じゃないのと一緒
>>296
>エンジンで走る車があって、エンジンで飛ぶ飛行機があっても、車は飛行機じゃないのと一緒
is-a の話の例えに has-a の話を使うのは論理的ではありませんね
「車 has エンジン、飛行機 has エンジン」の話と「参照カウンタ is GC、スマポ is GC」の話は別ですよ
>エンジンで走る車があって、エンジンで飛ぶ飛行機があっても、車は飛行機じゃないのと一緒
is-a の話の例えに has-a の話を使うのは論理的ではありませんね
「車 has エンジン、飛行機 has エンジン」の話と「参照カウンタ is GC、スマポ is GC」の話は別ですよ
298デフォルトの名無しさん (ワッチョイ ef02-A2Qj)
2018/09/07(金) 00:12:24.59ID:YR0a2VfT0300はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 00:17:33.32ID:EL+7DMJm0 参照カウンタは GC だろ。
301はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 00:22:54.57ID:EL+7DMJm0 >>266
元々の質問はどちらが速いかではない。
元々の質問はどちらが速いかではない。
>>300
では std::shared_ptr も GC でしょうか?
では std::shared_ptr も GC でしょうか?
303はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 01:28:57.33ID:EL+7DMJm0 >>302
私は std::shared_ptr を GC だと思ってるよ。
解放のタイミングがコンパイル時に確定しないようなのは GC だろってくらいのカジュアルな認識だけど。
基準の妥当性はともかくとして、とにかく私はそういう基準で考えてる。
QZ 氏の中で std::shared_ptr と GC を隔てるのは何だと思ってるの?
私は std::shared_ptr を GC だと思ってるよ。
解放のタイミングがコンパイル時に確定しないようなのは GC だろってくらいのカジュアルな認識だけど。
基準の妥当性はともかくとして、とにかく私はそういう基準で考えてる。
QZ 氏の中で std::shared_ptr と GC を隔てるのは何だと思ってるの?
304デフォルトの名無しさん (ワッチョイ 13ea-OfLu)
2018/09/07(金) 02:17:04.39ID:obwFdGuS0 Qt5触ってみてるけど生ポインタばっか使ってて気持ち悪い、これでいいのか?
305デフォルトの名無しさん (ワッチョイ efd2-7GfT)
2018/09/07(金) 07:52:15.03ID:KDtg+GuV0 GC ⊇ shared_ptr
306デフォルトの名無しさん (ラクッペ MM3b-QWFi)
2018/09/07(金) 08:31:14.42ID:M/DU9wQ1M >>304
生は触って気持ちいいものしかないよ
生は触って気持ちいいものしかないよ
307デフォルトの名無しさん (JP 0He6-O+me)
2018/09/07(金) 11:18:53.99ID:f8oqes6vH parentクラスがあってそれを継承したchildクラスがあります。
vector<parent*> getParentlist(){//省略}でこんな感じでparentクラスのポインタのリストを返す関数があります。
それでここからが質問なのですが、
vector<child*> childList = (vector<child*>)getparentlist();
こういうコードがあってびっくりしています。
機能はしているみたいですがこれ作法的にオッケーなんでしょうか。
ダウンキャストは良くないと聞いていたりそもそもこれダウンキャストなのかとかちょっと分からないんです。
よろしくおねがいします。
vector<parent*> getParentlist(){//省略}でこんな感じでparentクラスのポインタのリストを返す関数があります。
それでここからが質問なのですが、
vector<child*> childList = (vector<child*>)getparentlist();
こういうコードがあってびっくりしています。
機能はしているみたいですがこれ作法的にオッケーなんでしょうか。
ダウンキャストは良くないと聞いていたりそもそもこれダウンキャストなのかとかちょっと分からないんです。
よろしくおねがいします。
308デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/07(金) 11:20:41.99ID:/+XJI6DP0 >>281
話が通じてないなあ。。。
デストラクタでuse_count見てるのは当たり前だろ
シェアードポインタの話だぜ?
解放のタイミングがアプリのロジックに従属してるかどうかって話なのに
何を言い出すかと思えば
話が通じてないなあ。。。
デストラクタでuse_count見てるのは当たり前だろ
シェアードポインタの話だぜ?
解放のタイミングがアプリのロジックに従属してるかどうかって話なのに
何を言い出すかと思えば
309デフォルトの名無しさん (ワッチョイ 13b3-7GfT)
2018/09/07(金) 12:35:44.17ID:KEvh9jix0 >>307
試せる限りのコンパイラではそもそもコンパイルエラーだったけどなぁ
vector<parent *> &getParentlist();
じゃなくて??
その上で
(vector<child *> &)getParentlist();
なら通るよ、通るし普通に使えるはず
試せる限りのコンパイラではそもそもコンパイルエラーだったけどなぁ
vector<parent *> &getParentlist();
じゃなくて??
その上で
(vector<child *> &)getParentlist();
なら通るよ、通るし普通に使えるはず
310デフォルトの名無しさん (JP 0He6-O+me)
2018/09/07(金) 13:23:59.20ID:f8oqes6vH >>309
失礼しました。ポインタ抜けてました
vector<parent*>* getParentlist(){//省略}
で
vector<child*>* childList = (vector<child*>*)getparentlist();
こんな感じです
失礼しました。ポインタ抜けてました
vector<parent*>* getParentlist(){//省略}
で
vector<child*>* childList = (vector<child*>*)getparentlist();
こんな感じです
311デフォルトの名無しさん (ワッチョイ 13b3-7GfT)
2018/09/07(金) 13:38:44.48ID:KEvh9jix0 おいおい・・・w
ポインタでも同じことだ、そのキャストをreinterpret_castだと考えたらわかるはず
それでわからないならC++の継承の仕組みを勉強すべき
ポインタでも同じことだ、そのキャストをreinterpret_castだと考えたらわかるはず
それでわからないならC++の継承の仕組みを勉強すべき
312はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 16:38:51.51ID:EL+7DMJm0 基底方向へのキャストの実態は
サブオブジェクトまでのオフセット分だけアドレスをずらす操作なので、
>>310 のような場合にはそれは実現できない。
単に無理やり型を合わせているだけになってしまっている。
C++ 的にはあかんやつ。
ただ、実際に動いている理由をあえて考察するなら、
child が parent を単一継承した場合などには parent が child の先頭に配置されるようなメモリレイアウトにコンパイルされる可能性が高く、
アドレスをずらす量が 0 で済んでしまうので
型を読み替えるだけでも不整合が顕在化せずに動作してしまうということは有りうる。
あくまでも、処理系がやってることが偶然に組み合わさって動いているというだけなので、やめといた方がよい。
サブオブジェクトまでのオフセット分だけアドレスをずらす操作なので、
>>310 のような場合にはそれは実現できない。
単に無理やり型を合わせているだけになってしまっている。
C++ 的にはあかんやつ。
ただ、実際に動いている理由をあえて考察するなら、
child が parent を単一継承した場合などには parent が child の先頭に配置されるようなメモリレイアウトにコンパイルされる可能性が高く、
アドレスをずらす量が 0 で済んでしまうので
型を読み替えるだけでも不整合が顕在化せずに動作してしまうということは有りうる。
あくまでも、処理系がやってることが偶然に組み合わさって動いているというだけなので、やめといた方がよい。
313デフォルトの名無しさん (ワッチョイ 13b3-7GfT)
2018/09/07(金) 17:46:14.93ID:KEvh9jix0 そこまでご丁寧に説明してやるのなら、「Cスタイルのキャストは使うな」、を教えるべきじゃねーの?
314デフォルトの名無しさん (ワッチョイ 1ee3-7bxL)
2018/09/07(金) 18:34:49.58ID:mMEjLB3K0 parent * が child * なのかも分からないのに強引にキャストするのか
そこまで型無視するなら void * でいいんじゃない 知らんけど
そこまで型無視するなら void * でいいんじゃない 知らんけど
316はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 20:57:32.70ID:EL+7DMJm0 C++ スタイルのキャストを、特に入門者の内は static_cast だけ使っておけばまあまあ大丈夫。
static_cast でエラーになるような変換は C++ 的にはだいたいイケてないやつ。
static_cast でエラーになるような変換は C++ 的にはだいたいイケてないやつ。
317デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/07(金) 20:59:50.93ID:/+XJI6DP0 アホか
dynamic_castが使えないくせに初心者皆伝なんぞやれん
dynamic_castが使えないくせに初心者皆伝なんぞやれん
>>303
>私は std::shared_ptr を GC だと思ってるよ。
…GC発祥の地 lisp の使い手のはちみつさんがそうおっしゃるのなら、私の中の定義も書き換えないといけませんね
mark and sweep GC って、プログラム本体とは関係のないところで、それこそメモリの死にビットをも使ったりして、ごそごそやる、というイメージがあります
>解放のタイミングがコンパイル時に確定しないようなのは GC だろってくらいのカジュアルな認識
>std::shared_ptr と GC を隔てるのは何
「解放のタイミングを図る機構が表のプログラムとは独立している」
くらいでしょうか?表のプログラムからの参照が途切れることと free() されることに直接の関係性がない mark and sweep とその発展型のみを GC とみなしています
といって、GC の本は一冊しか持っていません
>私は std::shared_ptr を GC だと思ってるよ。
…GC発祥の地 lisp の使い手のはちみつさんがそうおっしゃるのなら、私の中の定義も書き換えないといけませんね
mark and sweep GC って、プログラム本体とは関係のないところで、それこそメモリの死にビットをも使ったりして、ごそごそやる、というイメージがあります
>解放のタイミングがコンパイル時に確定しないようなのは GC だろってくらいのカジュアルな認識
>std::shared_ptr と GC を隔てるのは何
「解放のタイミングを図る機構が表のプログラムとは独立している」
くらいでしょうか?表のプログラムからの参照が途切れることと free() されることに直接の関係性がない mark and sweep とその発展型のみを GC とみなしています
といって、GC の本は一冊しか持っていません
319デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/07(金) 22:36:10.40ID:OXR/kEGJ0 は○ち○餃子はLisperか
言語選びは慎重にな!
ttps://postd.cc/lisping-at-jpl/
言語選びは慎重にな!
ttps://postd.cc/lisping-at-jpl/
320はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 22:37:40.84ID:EL+7DMJm0 >>318
定義がひとつでなきゃならないとは思ってないよ。
だから自分なりに一貫した考え方があるのなら、それはそれでいいんじゃないかな。
ただ、「表の機構と分離されているか」という考え方だと、それは抽象化の仕方であって、メカニズム (アルゴリズム) の基準ではないね。
その基準だと std::shared_ptr が GC ではないとは言えても参照カウンタが GC ではないとは言えない。
定義がひとつでなきゃならないとは思ってないよ。
だから自分なりに一貫した考え方があるのなら、それはそれでいいんじゃないかな。
ただ、「表の機構と分離されているか」という考え方だと、それは抽象化の仕方であって、メカニズム (アルゴリズム) の基準ではないね。
その基準だと std::shared_ptr が GC ではないとは言えても参照カウンタが GC ではないとは言えない。
321デフォルトの名無しさん (スプッッ Sd3b-g95O)
2018/09/07(金) 22:45:54.86ID:Gz5E8uWmd お返事遅れました>>213です
Overlappedの設定をCreateNamedPipe時点に引数として渡す構造体ことで同期制御を実現できました
ありがとうございました
メモリリーク探しきつい....
Overlappedの設定をCreateNamedPipe時点に引数として渡す構造体ことで同期制御を実現できました
ありがとうございました
メモリリーク探しきつい....
322デフォルトの名無しさん (アウアウカー Sa33-IcDn)
2018/09/07(金) 22:58:55.32ID:nLV7kBrTa すみません質問があります
メインスレッドと通信スレッドがいて、
通信スレッドはメインスレッドのオブジェクトポインタ持ってます
メインスレッドはクラス化されており、スレッド用のstatic関数以外にもメンバ関数を持っています
通信スレッドがデータ受信して、メインスレッドの別のメンバ関数を呼び出した時、
メインスレッドで実行していた処理はどうなるのでしょうか?
メインスレッドで実行していた処理はあくまでもstaticな関数の処理で、staticでない他のメンバ関数は別に処理されるのでしょうか?
メインスレッドと通信スレッドがいて、
通信スレッドはメインスレッドのオブジェクトポインタ持ってます
メインスレッドはクラス化されており、スレッド用のstatic関数以外にもメンバ関数を持っています
通信スレッドがデータ受信して、メインスレッドの別のメンバ関数を呼び出した時、
メインスレッドで実行していた処理はどうなるのでしょうか?
メインスレッドで実行していた処理はあくまでもstaticな関数の処理で、staticでない他のメンバ関数は別に処理されるのでしょうか?
323はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 23:04:25.63ID:EL+7DMJm0324デフォルトの名無しさん (アウアウカー Sa33-IcDn)
2018/09/07(金) 23:21:53.12ID:nLV7kBrTa325デフォルトの名無しさん (ワッチョイ aa7e-7GfT)
2018/09/07(金) 23:22:52.89ID:RvuhpJx80 スレッドとメモリの関係がよく分かってないようだ
326デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/07(金) 23:23:07.46ID:OXR/kEGJ0 微妙な質問キタ
327デフォルトの名無しさん (ワッチョイ efd2-7GfT)
2018/09/07(金) 23:23:45.59ID:KDtg+GuV0 解放のタイミングがコンパイル時に確定しないのは shared_ptr でも同じでしょ。
任意のshared_ptrインスタンスを別のインスタンスにコピーした場合、解放のタイミングはコンパイル時に確定できない。
任意のshared_ptrインスタンスを別のインスタンスにコピーした場合、解放のタイミングはコンパイル時に確定できない。
328デフォルトの名無しさん (ワッチョイ aa7e-7GfT)
2018/09/07(金) 23:25:23.60ID:RvuhpJx80 vectorがconstexpr対応できるならshared_ptrもできそう
329デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/07(金) 23:26:09.70ID:B/yxkRYZ0 staticなメンバ関数ではstaticなメンバ変数しか参照できない
staticでないメンバ関数はstaticな変数もstaticでない変数も参照できる
staticなメンバ関数とstaticでないメンバ関数が作用しあうのであれば、
当然staticな変数になる
はっきりいってな
staticな変数はグローバル変数と同じだからな
とうぜん同じ実体の変数を参照することになる
staticでないメンバ関数はstaticな変数もstaticでない変数も参照できる
staticなメンバ関数とstaticでないメンバ関数が作用しあうのであれば、
当然staticな変数になる
はっきりいってな
staticな変数はグローバル変数と同じだからな
とうぜん同じ実体の変数を参照することになる
330デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/07(金) 23:26:58.48ID:OXR/kEGJ0 >>329は視野が広い人じゃなかったのか!?
331デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/07(金) 23:29:06.23ID:B/yxkRYZ0 > スレッド用のstatic関数以外にもメンバ関数を持っています
> 通信スレッドがデータ受信して、メインスレッドの別のメンバ関数を呼び出した
> 通信スレッドで呼び出した別のメンバ関数内でメンバ変数を変更した
まず低学歴知恵遅れは質問を読解する能力がない
> 通信スレッドがデータ受信して、メインスレッドの別のメンバ関数を呼び出した
> 通信スレッドで呼び出した別のメンバ関数内でメンバ変数を変更した
まず低学歴知恵遅れは質問を読解する能力がない
332デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/07(金) 23:35:54.69ID:OXR/kEGJ0333はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 23:38:50.05ID:EL+7DMJm0 >>324
出来るが、データ競合が起こらないように気を付けよう。
出来るが、データ競合が起こらないように気を付けよう。
334はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/07(金) 23:41:24.38ID:EL+7DMJm0 質問者が状況を理解してない説明をしてるから本当に回答になってるのかイマイチわからぬ。
無理に言葉にしようとせずにコードを示してくれた方がいいんだがなぁ。
無理に言葉にしようとせずにコードを示してくれた方がいいんだがなぁ。
335デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/07(金) 23:41:30.87ID:B/yxkRYZ0 バカじゃなければ
普通にアドレスが固定されてるstaticなメンバ関数のアドレスを
スレッドを開始させるアドレスにしてると推定できるからな
普通にアドレスが固定されてるstaticなメンバ関数のアドレスを
スレッドを開始させるアドレスにしてると推定できるからな
336デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/07(金) 23:46:20.44ID:B/yxkRYZ0 このスレのバカどもはスレッドなんか
なんも分かってないからな
質問するヤツもバカになにを聞いてもムダだからな
そこの理解は必要
なんも分かってないからな
質問するヤツもバカになにを聞いてもムダだからな
そこの理解は必要
337デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/07(金) 23:56:01.03ID:OXR/kEGJ0338デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/07(金) 23:58:34.82ID:B/yxkRYZ0 > 通信スレッドはメインスレッドのオブジェクトポインタ持ってます
まず一番最初に書いてることが読めてない
致命的な頭のワルサといっていい
まず一番最初に書いてることが読めてない
致命的な頭のワルサといっていい
339デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:00:18.18ID:j/6nk0eH0 普通にメインスレッドのメンバ関数呼び出して
メインスレッドのメンバ変数を変更すると読めるからな
こんだけコミュニケーションレベルが低いと
実生活でも支障があるレベルといっていい
メインスレッドのメンバ変数を変更すると読めるからな
こんだけコミュニケーションレベルが低いと
実生活でも支障があるレベルといっていい
340デフォルトの名無しさん (ワッチョイ daf9-FJXj)
2018/09/08(土) 00:03:28.41ID:VqyCCBP80 >>330
半角クンは自分の見たいものしか見えない、すなわち常に半角クンの中ではすべてのものを見通している視野100%ということなのだろう
半角クンは自分の見たいものしか見えない、すなわち常に半角クンの中ではすべてのものを見通している視野100%ということなのだろう
341デフォルトの名無しさん (アウアウカー Sa33-IcDn)
2018/09/08(土) 00:04:14.21ID:49ssh0n4a342デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:06:40.10ID:j/6nk0eH0 まずなこのスレの低学歴知恵遅れたちは
自分たちがどんだけ低学歴知恵遅れかという自覚がない
致命的といっていい
自分たちがどんだけ低学歴知恵遅れかという自覚がない
致命的といっていい
343デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 00:18:54.01ID:6MRSNGru0344デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:20:24.81ID:j/6nk0eH0 また低学歴知恵遅れが負け惜しみ意味不明なこといってるしな
低学歴知恵遅れの負けず嫌いは異常だからな
低学歴知恵遅れの負けず嫌いは異常だからな
345デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:22:38.67ID:j/6nk0eH0 低学歴知恵遅れほど自尊心だけは高い
コレは底辺に多い
そして自分がゴミクズの低学歴知恵遅れである自覚もない
つまり救いようがない
コレは底辺に多い
そして自分がゴミクズの低学歴知恵遅れである自覚もない
つまり救いようがない
346デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:30:51.48ID:j/6nk0eH0 低学歴知恵遅れの底辺ゴミクズほど自己評価だけは高い
その根拠のない自己評価の高さは
どこからくるものなかははっきりとは分からない
低学歴知恵遅れの底辺ゴミクズほどそういう傾向がある
それは経験からかなり相関が高いと確信している
その根拠のない自己評価の高さは
どこからくるものなかははっきりとは分からない
低学歴知恵遅れの底辺ゴミクズほどそういう傾向がある
それは経験からかなり相関が高いと確信している
みなさん厳しいですね…
私は質問側ですが、そして今 schme スレで質問を丸投げしちゃっていますが、わからないときは、なにがわからないかわからない、という感じだったりしています
>>324
なにか断片的でいいからコード例をあげていただくと嬉しいです、例えば https://ideone.com/VvdMRl
私は質問側ですが、そして今 schme スレで質問を丸投げしちゃっていますが、わからないときは、なにがわからないかわからない、という感じだったりしています
>>324
なにか断片的でいいからコード例をあげていただくと嬉しいです、例えば https://ideone.com/VvdMRl
348デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/08(土) 00:45:27.68ID:j/6nk0eH0 むしろこのスレの低学歴知恵遅れの底辺ゴミクズたちは
質問してるヤツのレベルにすら到達してない
質問してるヤツのレベルにすら到達してない
349デフォルトの名無しさん (アウアウカー Sa33-IcDn)
2018/09/08(土) 00:46:44.54ID:49ssh0n4a350デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 01:03:30.65ID:6MRSNGru0351デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 01:10:28.57ID:6MRSNGru0352デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/08(土) 01:32:58.78ID:LCjnyCTn0 >>351
よろしければ教えていただけますか?
>20行目のC::f()呼び出しで呼び出されたstd::coutがメモリバリア的な効果を果たした
メモリバリアって要するに x86 の lfence, sfence, mfence のことですか?
これはCPUキャッシュがメインメモリに吐き出されることを保証するものですか?
これらの命令は Pentiumu2 あたりにはなかったと思います、でも Pen2 とか特に Celeron-BP6(abit) で普通にデュアルプロセッサできていたのはどうしてでしょうか?
よろしければ教えていただけますか?
>20行目のC::f()呼び出しで呼び出されたstd::coutがメモリバリア的な効果を果たした
メモリバリアって要するに x86 の lfence, sfence, mfence のことですか?
これはCPUキャッシュがメインメモリに吐き出されることを保証するものですか?
これらの命令は Pentiumu2 あたりにはなかったと思います、でも Pen2 とか特に Celeron-BP6(abit) で普通にデュアルプロセッサできていたのはどうしてでしょうか?
354デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 02:36:49.43ID:6MRSNGru0 >>353
>これはCPUキャッシュがメインメモリに吐き出されることを保証するものですか?
ちげう
実行したコアのライトコマンドキューかリードコマンドキュー上の命令をその場で全部実行してしまうというもの
キャッシュのinvalidateやfillが起きるかどうかとは別の話(結果的に起きることもあるが常にではない
キャッシュと関係あるみたいな説明のページがあることは承知しているが苦情は漏れに言わないでホスイ
>これらの命令は Pentiumu2 あたりにはなかったと思います、でも Pen2 とか特に Celeron-BP6(abit) で普通にデュアルプロセッサできていたのはどうしてでしょうか?
古代の話は知らん
OoO(アウトオブオーダー実行)はすでにあったはずなので、ライトコマンドキューやリードコマンドキューもすでにあった
全くの推測だが、キャッシュのinvalidate操作が(invalidateを常に伴うため効率の悪い)メモリバリアと同じ効果があったとかではないかいや知らんけど
>これはCPUキャッシュがメインメモリに吐き出されることを保証するものですか?
ちげう
実行したコアのライトコマンドキューかリードコマンドキュー上の命令をその場で全部実行してしまうというもの
キャッシュのinvalidateやfillが起きるかどうかとは別の話(結果的に起きることもあるが常にではない
キャッシュと関係あるみたいな説明のページがあることは承知しているが苦情は漏れに言わないでホスイ
>これらの命令は Pentiumu2 あたりにはなかったと思います、でも Pen2 とか特に Celeron-BP6(abit) で普通にデュアルプロセッサできていたのはどうしてでしょうか?
古代の話は知らん
OoO(アウトオブオーダー実行)はすでにあったはずなので、ライトコマンドキューやリードコマンドキューもすでにあった
全くの推測だが、キャッシュのinvalidate操作が(invalidateを常に伴うため効率の悪い)メモリバリアと同じ効果があったとかではないかいや知らんけど
355デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 02:52:26.13ID:6MRSNGru0 ちなIA(Intel Architecture)のうちでも常識的なコア数のやつは
コア間のキャッシュコヒーレンシをハードウェアで勝手に取ってくれるので、
コア間のメモリ参照の不整合はメモリバリアだけ注意したら逝ける(キャッシュの存在は透過的
コア間のキャッシュコヒーレンシをハードウェアで勝手に取ってくれるので、
コア間のメモリ参照の不整合はメモリバリアだけ注意したら逝ける(キャッシュの存在は透過的
356はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-7GfT)
2018/09/08(土) 02:58:07.14ID:VmsJpbI+0357デフォルトの名無しさん (ワッチョイ f723-Wta3)
2018/09/08(土) 03:04:22.19ID:RizVmglH0 >>354
>実行したコアのライトコマンドキューかリードコマンドキュー上の命令をその場で全部実行してしまうというもの
>キャッシュのinvalidateやfillが起きるかどうかとは別の話(結果的に起きることもあるが常にではない
なるほど…ちょっとだけ理解が進んだかもしれません
「はるか遠くにあるメインメモリに変更が反映されるかどうか」はプログラムの書き手にはあまり関係がなく、
「各コアから見る限りにおいて、各コアが発したライトあるいはリードの結果すべてが反映され、各コアからはみえている」と考えればいいのですね
これらのメモリの可視性について http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2013/2013-10-15/ 等を熟考しています
mutex や cond にその方面での効用があるとは…、pthread のメモリ可視性に関する効果はあまり意識していませんでした
重要なヒントをくださりありがとうございます
>実行したコアのライトコマンドキューかリードコマンドキュー上の命令をその場で全部実行してしまうというもの
>キャッシュのinvalidateやfillが起きるかどうかとは別の話(結果的に起きることもあるが常にではない
なるほど…ちょっとだけ理解が進んだかもしれません
「はるか遠くにあるメインメモリに変更が反映されるかどうか」はプログラムの書き手にはあまり関係がなく、
「各コアから見る限りにおいて、各コアが発したライトあるいはリードの結果すべてが反映され、各コアからはみえている」と考えればいいのですね
これらのメモリの可視性について http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2013/2013-10-15/ 等を熟考しています
mutex や cond にその方面での効用があるとは…、pthread のメモリ可視性に関する効果はあまり意識していませんでした
重要なヒントをくださりありがとうございます
>>352
>書き換えレース
ええと、これを読んで reset-set flip-flop の禁止入力「R=S=1」のことを思い出してしまったんですが、それはさておき
複数のコアが同一メモリに対して「同時に書き込み」する、というのは、このフリップフロップ禁止入力と同じ意味あいですか?
つまり「どっちの書き込みが後になるか、予想がつかないから禁止」…@
それとも、「複数のコアが本当に同時に書き込んでしまった場合、結果が不定になる」…A
(昔のフロッピーディスク供給のソフトウェアプロテクトの方法としての「コロコロビット」=読み出すたびに 0/1 が変わる)という意味なのか
いや、@もAも同じような意味なのかもしれませんが、
>>215 の「CAS 連続スピンロックや CAS 連続スピンロック中に別コアから書き込んだり読み込んだりすること」
がAの意味で危険で、ソフトウェア側で mutex や dirty-bit (>>238) を設けて本当に意図的にコントロールしなければならないのか、と、ちょっと心配になりました
最初から安全側にふっておくとは思いますが
>書き換えレース
ええと、これを読んで reset-set flip-flop の禁止入力「R=S=1」のことを思い出してしまったんですが、それはさておき
複数のコアが同一メモリに対して「同時に書き込み」する、というのは、このフリップフロップ禁止入力と同じ意味あいですか?
つまり「どっちの書き込みが後になるか、予想がつかないから禁止」…@
それとも、「複数のコアが本当に同時に書き込んでしまった場合、結果が不定になる」…A
(昔のフロッピーディスク供給のソフトウェアプロテクトの方法としての「コロコロビット」=読み出すたびに 0/1 が変わる)という意味なのか
いや、@もAも同じような意味なのかもしれませんが、
>>215 の「CAS 連続スピンロックや CAS 連続スピンロック中に別コアから書き込んだり読み込んだりすること」
がAの意味で危険で、ソフトウェア側で mutex や dirty-bit (>>238) を設けて本当に意図的にコントロールしなければならないのか、と、ちょっと心配になりました
最初から安全側にふっておくとは思いますが
361デフォルトの名無しさん (ワッチョイ f723-Wta3)
2018/09/08(土) 08:05:39.39ID:RizVmglH0 考える前に学んだ方がいい
cas が使い物にならないならなぜそんな物があると思う?
というか mutex の実装にも cas は使用される。
使い方がわからないからcasは使わず mutex を使うという判断は正しいが、
例えば前の例のエラトステネスの篩で実装1ビットセットする毎に
mutex で排他していたらコアがかなり沢山あってもシングルスレッドの方が速い
(mutex api を処理する時間が大半を占めてしまう)
cas が使い物にならないならなぜそんな物があると思う?
というか mutex の実装にも cas は使用される。
使い方がわからないからcasは使わず mutex を使うという判断は正しいが、
例えば前の例のエラトステネスの篩で実装1ビットセットする毎に
mutex で排他していたらコアがかなり沢山あってもシングルスレッドの方が速い
(mutex api を処理する時間が大半を占めてしまう)
362デフォルトの名無しさん (ワッチョイ f723-Wta3)
2018/09/08(土) 08:13:01.68ID:RizVmglH0 質問する前にスレッドセーフとか排他制御とかレースコンディションとか
弱いメモリモデルとかでググって時間くらいしっかり読んで
弱いメモリモデルとかでググって時間くらいしっかり読んで
363デフォルトの名無しさん (ワッチョイ f723-Wta3)
2018/09/08(土) 08:13:34.47ID:RizVmglH0 >時間くらい
「1時間くらい」のタイプミスでした。
「1時間くらい」のタイプミスでした。
364デフォルトの名無しさん (ワッチョイ 7ab3-M35H)
2018/09/08(土) 11:49:10.23ID:+e2Zk2SC0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 自民 麻生副総裁 高市外交を「上々の滑り出し」と評価 [首都圏の虎★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★2 [蚤の市★]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- Bloomberg「やり過ぎた中国、高市首相の政策遂行手助け」 [481941988]
- 中国政府、日本人のビザ免除停止、鬼滅の刃公開停止を検討へ [271912485]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
- 【赤旗スクープ】維新・高木総務会長も公金還流。政策秘書の3会社に家賃など2726万円 [593776499]
