次スレを立てる時は本文の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:vY3QDx2y0296デフォルトの名無しさん (ワッチョイ 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:+e2Zk2SC0365デフォルトの名無しさん (ドコグロ MM32-vzSQ)
2018/09/08(土) 13:52:50.37ID:UCzuGyPmM >>360
> つまり「どっちの書き込みが後になるか、予想がつかないから禁止」…@
順序は予測できないと言うのは正しい
> それとも、「複数のコアが本当に同時に書き込んでしまった場合、結果が不定になる」…A
通常のプロセッサならこれはない
排他制御がなされていてどちらかの結果が最終的に反映される
ただ CAS (Compare And Swap) 命令はそう言う話じゃなくて読出動作 (Compare) と書込動作 (Swap) がアトミック(つまりその間には他のアクセスは無いように制御されてる)ってこと
ソフトでどうのこうのできる話じゃないからシステムから提供されてるAPIを素直に使いなさい
>>364
中途半端な知識で語るなよ
> つまり「どっちの書き込みが後になるか、予想がつかないから禁止」…@
順序は予測できないと言うのは正しい
> それとも、「複数のコアが本当に同時に書き込んでしまった場合、結果が不定になる」…A
通常のプロセッサならこれはない
排他制御がなされていてどちらかの結果が最終的に反映される
ただ CAS (Compare And Swap) 命令はそう言う話じゃなくて読出動作 (Compare) と書込動作 (Swap) がアトミック(つまりその間には他のアクセスは無いように制御されてる)ってこと
ソフトでどうのこうのできる話じゃないからシステムから提供されてるAPIを素直に使いなさい
>>364
中途半端な知識で語るなよ
366デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/08(土) 16:38:24.58ID:+lRq1NsW0367デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 20:07:53.81ID:6MRSNGru0 このスレは荒れる…!
マルチスレッド、マルチコア、アウトオブオーダー実行(OoO)にまつわる3つの問題は分けて考えられねばならない;
(A) 書き換えレースの問題(>>352)
(B) アドレスxに対する読み書きのatomic性(>>364)
(C) メモリバリア(>>354)
(A)はマルチスレッドすればシングルCPUでも起きる問題
(B)はこれは何ビット幅までの読み書きを他コアが割り込み不可能なバスサイクルで行えるかという話。マルチコア固有
(C)はマルチコア状況化でのアウトオブオーダー(OoO)実行の影響をソフトで制御して無問題にするテクの話で、マルチコア×OoO固有の話
>>364は(B)のことを言っており、だいたい合っているんじゃ
(IAの場合、4バイト境界に整列した32ビットまでは(B)の意味でatomicに読み書きできる
整列していないデータの読み書きは16 bitであっても(B)の意味でatomicではない
インテルのマニュアルに書いてある
自尊心だけは高い低学歴知恵遅れなのでいちいちソースは示さないが
マルチスレッド、マルチコア、アウトオブオーダー実行(OoO)にまつわる3つの問題は分けて考えられねばならない;
(A) 書き換えレースの問題(>>352)
(B) アドレスxに対する読み書きのatomic性(>>364)
(C) メモリバリア(>>354)
(A)はマルチスレッドすればシングルCPUでも起きる問題
(B)はこれは何ビット幅までの読み書きを他コアが割り込み不可能なバスサイクルで行えるかという話。マルチコア固有
(C)はマルチコア状況化でのアウトオブオーダー(OoO)実行の影響をソフトで制御して無問題にするテクの話で、マルチコア×OoO固有の話
>>364は(B)のことを言っており、だいたい合っているんじゃ
(IAの場合、4バイト境界に整列した32ビットまでは(B)の意味でatomicに読み書きできる
整列していないデータの読み書きは16 bitであっても(B)の意味でatomicではない
インテルのマニュアルに書いてある
自尊心だけは高い低学歴知恵遅れなのでいちいちソースは示さないが
368デフォルトの名無しさん (ワッチョイ b3bd-5rD0)
2018/09/08(土) 20:29:14.34ID:6MRSNGru0 とはいえ、読み書きをミューテックスなりロックなりでガードする、…(D)
これだけを遵守すれば>>367の問題は全部忘れて良い(>>351の後段にも書いた)
メモリモデルとかまともに勉強する必要は無い
さらに言うと、まともなコンパイラなら(中でどんな副作用やメモリバリアを行うかわからない)システムコールを跨いだ
変数のレジスタ割り当てとかしないから、(D)を守れば実際のところ(ほとんどのケースで)volatileも要らん
メモリモデルを勉強する必要があるのは、(D)の速度に不満が生じて改善する必要に迫られたとき、
例えばdouble-checked lockingテクがちゃんと動くのかとか不安になったりロックレスハッシュを作らねばならなくなったときだけ!
これだけを遵守すれば>>367の問題は全部忘れて良い(>>351の後段にも書いた)
メモリモデルとかまともに勉強する必要は無い
さらに言うと、まともなコンパイラなら(中でどんな副作用やメモリバリアを行うかわからない)システムコールを跨いだ
変数のレジスタ割り当てとかしないから、(D)を守れば実際のところ(ほとんどのケースで)volatileも要らん
メモリモデルを勉強する必要があるのは、(D)の速度に不満が生じて改善する必要に迫られたとき、
例えばdouble-checked lockingテクがちゃんと動くのかとか不安になったりロックレスハッシュを作らねばならなくなったときだけ!
369デフォルトの名無しさん (ブーイモ MMaf-qEbW)
2018/09/08(土) 22:09:03.01ID:Mc6Ny40VM >>367
マルチプロセッサとかNUMAの事は考慮しなくても良いのけ?
マルチプロセッサとかNUMAの事は考慮しなくても良いのけ?
370デフォルトの名無しさん (ワッチョイ bab3-vzSQ)
2018/09/08(土) 23:30:32.50ID:ZUEeKRTR0 バスサイクルと言ったりミューテックスって言ったり話のレベルがぐちゃぐちゃすぎる…
371デフォルトの名無しさん (ワッチョイ 3a12-f65Y)
2018/09/09(日) 01:33:18.67ID:XJaXrhZ00 なんせC++は生ポが使える低水準言語ですし・・・
372デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/09(日) 03:24:55.55ID:Q3MV1FJL0 要するにあらゆる左辺値をatomicにして更にミューテックスでガードしとけば(これはキチガイ)
ハード系の知識を学ぶ必要はない(ハードソフトという名の蛸壺)という無茶苦茶な主張だな
勉強嫌いにもほどがあるだろ、何が低学歴だ
ハード系の知識を学ぶ必要はない(ハードソフトという名の蛸壺)という無茶苦茶な主張だな
勉強嫌いにもほどがあるだろ、何が低学歴だ
373デフォルトの名無しさん (ブーイモ MMaf-qEbW)
2018/09/09(日) 08:36:42.55ID:BqWnELncM 周辺チップからのメモリ書換をミューテックスでガード出来るのか
374デフォルトの名無しさん (ワッチョイ 161b-QWFi)
2018/09/09(日) 08:59:15.50ID:9h0HyZsY0 実際プログラミングする上でハードの知識はいらんだろ
375デフォルトの名無しさん (ブーイモ MMaf-qEbW)
2018/09/09(日) 09:25:43.25ID:BqWnELncM ハードの知識無しでデバドラ書けるのけ?
376デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/09(日) 10:19:49.00ID:Q3MV1FJL0377デフォルトの名無しさん (ワッチョイ 161b-QWFi)
2018/09/09(日) 10:31:54.13ID:9h0HyZsY0378デフォルトの名無しさん (ワッチョイ 27e3-fTNn)
2018/09/09(日) 10:37:46.17ID:kQslwDxe0 作文したら推敲しろ、って小学校で習うはずなんだけどな
379デフォルトの名無しさん (ワッチョイ 161b-QWFi)
2018/09/09(日) 10:39:04.08ID:9h0HyZsY0380デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/09(日) 11:01:35.79ID:Q3MV1FJL0381デフォルトの名無しさん (ワッチョイ 5393-WN3X)
2018/09/09(日) 11:25:28.91ID:lGJ+2GvF0 ハードウェア部分を隠すためのOSによるアクセスの抽象化とか、
標準ライブラリがあるわけだし、ハードウェアの知識が絶対に必要でもないでしょ。
デバイスドライバを書くプログラマが優れているとか、その反対に
高レベルな(抽象度の高い)ソフトを作る人ほど偉いってものでもない。
標準ライブラリがあるわけだし、ハードウェアの知識が絶対に必要でもないでしょ。
デバイスドライバを書くプログラマが優れているとか、その反対に
高レベルな(抽象度の高い)ソフトを作る人ほど偉いってものでもない。
382デフォルトの名無しさん (ラクッペ MM3b-QWFi)
2018/09/09(日) 11:26:29.90ID:l6rR/pccM383デフォルトの名無しさん (ワッチョイ c78a-qEbW)
2018/09/09(日) 14:43:15.61ID:TxROatu90 何これ?
384デフォルトの名無しさん (ワッチョイ bab3-vzSQ)
2018/09/09(日) 15:02:39.54ID://bKOaXP0 いつものマウントごっこだろ
385デフォルトの名無しさん (アウアウカー Sa33-XU3l)
2018/09/09(日) 16:27:56.67ID:TAQT5wBea for i in {0..15}; do
mount /dev/dm-$i /mnt
done
mount /dev/dm-$i /mnt
done
386デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/09(日) 17:06:11.77ID:V1LakR3i0 捕食される側の人類最底辺同士で争ってる
387デフォルトの名無しさん (ワッチョイ aeeb-fTNn)
2018/09/09(日) 17:19:50.37ID:xES8AK750 低レベルプログラミングって言う面白そうな本が出てたなあ
388デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/09(日) 18:06:25.87ID:acpzPeVw0 そういえば、さいきんの低レベルいじる時ってどうするんやろね。
BIOSなくなってきてるし、作法かわってきてるのかなぁ・・・。
BIOSなくなってきてるし、作法かわってきてるのかなぁ・・・。
389デフォルトの名無しさん (ワッチョイ 17c3-oywQ)
2018/09/09(日) 18:53:37.14ID:+aTtRZce0 古き良きシリアルポートが普通のPCではほぼ絶滅してるからなあ
USBきらい
USBきらい
390デフォルトの名無しさん (ワッチョイ 5304-eMuy)
2018/09/09(日) 19:01:40.42ID:acpzPeVw0 USB制御のノウハウってあんまり周知されてない感じがする。
391デフォルトの名無しさん (ワッチョイ 9a22-7GfT)
2018/09/09(日) 19:09:08.66ID:Q3MV1FJL0 アイソクロナス?
392デフォルトの名無しさん (オイコラミネオ MMe6-xaKy)
2018/09/09(日) 19:38:22.19ID:eYgKQZDEM >>382
高級ってのを誤解しているアホがここにもいたわw
高級ってのを誤解しているアホがここにもいたわw
393デフォルトの名無しさん (ワッチョイ c78a-qEbW)
2018/09/09(日) 21:21:28.72ID:TxROatu90 >>390
LINE EYEで見てるとエラー出まくったりしてるね
LINE EYEで見てるとエラー出まくったりしてるね
394デフォルトの名無しさん (スッップ Sdda-g95O)
2018/09/10(月) 22:46:19.98ID:IGaBABI/d dllからexeをCreateProcessで起動するとメモリリークするとかある?
debugging tool forなんたらみたいなやつでメモリリークチェックしてるのだけど
exeから呼んだやつはリークなし
dllから呼んだやつはリークありとなっている
監視開始ポイントと終了ポイント及び呼び出しソースコードに差分がなく
その他にも差分がないんだ
debugging tool forなんたらみたいなやつでメモリリークチェックしてるのだけど
exeから呼んだやつはリークなし
dllから呼んだやつはリークありとなっている
監視開始ポイントと終了ポイント及び呼び出しソースコードに差分がなく
その他にも差分がないんだ
395デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/10(月) 23:03:06.10ID:XzQQxj6r0 dllから呼びだす場合
dllは呼びだした側のプロセスと同じアドレス空間にマッピングされ
dll側の関数を呼び出して生成されたヒープも
呼びだした側のプロセスと同じアドレス空間にマッピングされる
プロセスから呼び出した場合、
呼び出した側のプロセスと関係ない呼び出された側のプロセスのアドレス空間に
ヒープは生成されるから
呼び出した側のプロセスを監視してもそのリークについて検出されることはない
分かった?
dllは呼びだした側のプロセスと同じアドレス空間にマッピングされ
dll側の関数を呼び出して生成されたヒープも
呼びだした側のプロセスと同じアドレス空間にマッピングされる
プロセスから呼び出した場合、
呼び出した側のプロセスと関係ない呼び出された側のプロセスのアドレス空間に
ヒープは生成されるから
呼び出した側のプロセスを監視してもそのリークについて検出されることはない
分かった?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★2 [蚤の市★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★4 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【悲報】タリバン、外務省のトップに土下座させる始末 [974680522]
- 【悲報】SANA、発言撤回拒否 [769931615]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 【悲報】トランプ聖帝「高市…さん…でしたっけ?」 [878970802]
- 【高市悲報】「躁鬱」なのでASAPで自殺したい。医療保護入院歴あり。自死用のガスもある。なんとかしてくれ‼ [525213945]
- お前らちゃんと親になれそう????????????????????????????🤔
