- 1 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 11:35:36.76 ID:4wggfTwe.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part145 mevius.5ch.net/test/read.cgi/tech/1568362404/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
- 791 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:13:18.74 ID:bM/oaPHs.net]
- >>771
質問されたような簡単な場合であっても、少なくとも、80386系CPUでも、 物理CPUを2つ積んでいるようなマシンだと、色々な配慮が必要。 一つの理由は、CPUキャッシュが外部メモリに反映されていない場合が あるため。 もう一つは、値の変化のタイミングがコードに書いた通りで無い事があり、 僅かにタイミングがずれることで、「すれ違い」現象の様なことが おきることがある。これが起きると、変数の値をフラグ的に利用して 厳密に何かをやりたい場合に非常に致命的な問題を生じてしまうことがある。 これを避けるには、80386の設計者は、XOR交換命令を使うことを想定 していたらしい。 2つのスレッドでデータをやり取りする場合には色々と注意が必要で、 普通はデータが準備できたかどうかをCreateEvent(),SetEvent(), WaitForSingleEvent()などで待機して処理するのが基本。
- 792 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:17:08.59 ID:bM/oaPHs.net]
- >>776
スマン。XOR交換命令ではなく、xchg命令だった。
- 793 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:20:46.73 ID:NtLrnXCf.net]
- goよりかはrustの方が全然マシやと思うぞ
最近go案件振られること多いけどC言語触ってるみたいで好きになれんわ〜
- 794 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:30:30.06 ID:/1t9T7AP.net]
- >>776
xchgはsequential consistencyが必要な場合だよ 今回のように単にatomicにread/writeできればいいだけなら不要 お前さんも含めてよくわからん人は使わないのは正解
- 795 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:36:33.88 ID:bM/oaPHs.net]
- >>779
正直言って、俺は、lock, xchg, mfence, prefetch, キャッシュ制御付き(?)mov各種(大量) に付いてはちゃんと理解出来てないことは認める。
- 796 名前:デフォルトの名無しさん [2019/12/11(水) 18:38:56.23 ID:bM/oaPHs.net]
- MFENCE
PREFETCH MOVNTDQA LFENCE(?) XCHG LOCK prefix WC Memory ↑沢山あるけど、よく分からない。 xchgもちゃんと理解できてない。
- 797 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:39:59.12 ID:bM/oaPHs.net]
- MFENCE, LFENCE, SFENCE。
服のサイズみたいだ。分からん。
- 798 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:46:12.74 ID:bM/oaPHs.net]
- >>779
xchgは、2つ以上のCPUが1つの事柄に関する lock を同時に獲得しようとした時に 1 CPU だけが lock を獲得できて、他はすべて獲得できないようにするための ためのようですね。今回とは余り関係ないようです。
- 799 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 21:50:49.53 ID:10jfhd7e.net]
- >>777
XORを使った交換テクニックがあったのを思い出した
- 800 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 00:31:42.87 ID:n5d2iAqE.net]
- >>765
その場合でも排他制御は基本的には必要。 たとえば読み込んで範囲チェックをした後に値が変わってしまったらまずいでしょ。 別メモリにコピーを取っていてから処理しているつもりでも、最適化が気を利かして削除しちゃうこともあるだろうしね。
- 801 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 00:36:46.28 ID:n5d2iAqE.net]
- >>765
あとはアレだな、変数の構造にもよるけど、変数を読み込んでる最中に、上位ワードを読み込んだ後に値が変わって下位ワードだけ新しくなるなんてことも 可能性としては0とは言えない。
- 802 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 00:54:16 ID:UvCIGzud.net]
- AVXを使えば256bitを1命令で
AVX512を使えば512bitを1命令で 読み書き可能
- 803 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 01:00:12 ID:UvCIGzud.net]
- x86系だとCMPXCHG命令
ARMだとLL, AC命令 がデータの一貫性確認に使える
- 804 名前:デフォルトの名無しさん [2019/12/12(Thu) 03:03:25 ID:hmkgwwLY.net]
- とんちプログラミングはもう流行らなさそう。
- 805 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 03:28:17.88 ID:J/GuvI9A.net]
- とんちプログラミングwww
- 806 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 03:55:57 ID:g+q4RhTJ.net]
- > これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
> していたらしい。 当たり前じゃね?アトミックな命令を使うのは基本だと思うが
- 807 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 07:30:46.73 ID:UvCIGzud.net]
- XOR
- 808 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 07:43:20 ID:Vt8W+oPZ.net]
- xor rax,rbx
xor rbx,rax xor rax,rbx これでswap rax,rbx相当ってことね
- 809 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 07:53:00.21 ID:UvCIGzud.net]
- >>777
- 810 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 10:43:59.85 ID:r0VN1UlG.net]
- condition_variableで待機しているスレッドがない状態でnotify_allしたときの動作ってどうなりますか?
- 811 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 10:56:19.34 ID:WJA8YZFG.net]
- 時空が逆流し、針の先から悪魔が生まれる
- 812 名前:デフォルトの名無しさん [2019/12/12(木) 11:06:56.29 ID:a67Hqgb2.net]
- jsに対するTypeScriptみたいな感じで
C++に対するRustっていう認識は間違ってるが それならC++に対するそれは何が適当なんかある?
- 813 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 11:10:12.33 ID:Vt8W+oPZ.net]
- allに該当する要素の数が0なのを特別視する必要はなさそう
- 814 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 11:21:14.68 ID:NrsugUJv.net]
- 非同期な操作やしその瞬間何も起きんなら単にスルーするだけ
- 815 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 12:01:38.93 ID:Z8SHCwDj.net]
- >>797
無い。
- 816 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 12:26:43.11 ID:gL/Y8Ccu.net]
- >>797
Managed C++とかC++/CLIとか
- 817 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 13:04:34.98 ID:Z8SHCwDj.net]
- >>801
それだと余計に変になっているので、JS ---> TypeScript の関係とは違う。
- 818 名前:デフォルトの名無しさん [2019/12/12(木) 13:08:42.86 ID:b3wcvAqB.net]
- C++は型安全だからC++はC++
- 819 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 14:17:55.83 ID:CNmkwPhj.net]
- 型安全認定された!
- 820 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 14:59:18.45 ID:ZWrMIDdu.net]
- ていうかTypeScriptはJSが型があまりにもザルすぎて危険だよね、Javaやら
C/C++ほど堅くないにしてもある程度の型はいるよね?っていう発想ででてきた ものだから C++ から寄せていくならむしろ型をユルくしてくパターンだな そんなクソ言語には興味がないので具体的に何?ときかれても知らんがな
- 821 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 16:27:22.69 ID:AVYkL4QT.net]
- JSが危険ってどういう事?
C/C++は型がない=危険だけど JSなんかは型安全な言語だからちゃんと例外になって、 メモリ保護エラーとか起こすこと無いけど?
- 822 名前:デフォルトの名無しさん [2019/12/12(木) 16:39:21.91 ID:hmkgwwLY.net]
- Treeの節(Node)は部分木を表すRangeだと考えて差し支えないですかね?
- 823 名前:デフォルトの名無しさん [2019/12/12(木) 16:47:21.68 ID:hmkgwwLY.net]
- C++20のレンジってもしかしてDBのカーソルとかに応用できませんかね?
- 824 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 18:38:14.77 ID:Ijd1d2r8.net]
- 毎回フルスキャンしたいならどうぞ
- 825 名前:デフォルトの名無しさん [2019/12/12(木) 18:59:14.59 ID:hmkgwwLY.net]
- ビューで制限できるし遅延評価を目的としたストリームを代弁できるんじゃないかなって思ったのですが。
- 826 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:07:50.30 ID:Z8SHCwDj.net]
- >>806
型も宣言も無い事が危険になることが多い。 例えば、関数を定義しても仮引数に型がないので、全く間違った実引数列 を指定してしまっても処理系がエラーを出してくれない。関数を修正して 仮引数列の真ん中あたりに新しい仮引数を一つ増やしたとする。 この場合、この関数を呼び出す側もちゃんと全て修正する必要がある。 Cだと型をチェックしてくれるので修正の仕方を間違うとエラーになって くれることが多い。ところがJSだと間違っても全くエラーを出してくれない。 また、JSの場合、ローカル変数とグローバル変数を間違って使ってしまい、 グローバル変数にいれたつもりがローカル変数になってしまっていることがある。 また、変数を1文字間違えた場合も全くエラーにならず、新しいグローバル変数 が使用されたと解釈されてしまう。 どれも、C言語だとエラーになってくれるので安全だが、JSだと危険。
- 827 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:25:03.70 ID:AVYkL4QT.net]
- >>811
お前が型安全の意味を間違ってるってことはよく分かった。 メモリ保護エラーなど言語で解決されないエラー (OSがトラップするエラー)になってしまうことを 型安全じゃないっていうんだよ 言語で例外になるならそれは型安全
- 828 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:44:50.53 ID:Vt8W+oPZ.net]
- ぬるぽ
- 829 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 20:29:23.98 ID:f2lx0DlC.net]
- ツンッ
- 830 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 20:46:51.94 ID:6QhfdrtV.net]
- >>808
おそらくできると思う
- 831 名前:デフォルトの名無しさん [2019/12/12(木) 22:31:55.78 ID:hmkgwwLY.net]
- boost.property_treeはノードはコンテナだって書いてる。
アルゴリズムイントロダクションにはポインタ三つ組みのツリー表現が紹介されてるけど、これがノードがコンテナ的な感じだろか。
- 832 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 22:36:00.00 ID:2qfVB5NM.net]
- >>812
??? >>811は型安全なんて一言も言ってないけど?
- 833 名前:デフォルトの名無しさん [2019/12/12(木) 22:37:04.02 ID:hmkgwwLY.net]
- 仮に、ノードにSTLのリストやベクターを持たせて子ノードを格納すると、別の部分木のイテレータが互換性を持たなくなる。
これはちょっとまずい。 ある部分木の途中からある部分木の途中までを注目することはよくあるから。
- 834 名前:デフォルトの名無しさん [2019/12/12(木) 22:45:48.06 ID:hmkgwwLY.net]
- ノードの物理量が必ず同じであることを利用すれば、データ構造ヒープを木として使うのが良いんだろか。
これなら、メモリーの確保はSTLのベクターが使え、木全体でイテレータが互換性を持てる。
- 835 名前:デフォルトの名無しさん [2019/12/12(木) 22:52:26.39 ID:hmkgwwLY.net]
- 考えれば考えるほど、ノードに子ノード格納用のSTLコンテナを持たせるのは現実味がなく思える。
- 836 名前:デフォルトの名無しさん [2019/12/12(木) 22:59:41.49 ID:hmkgwwLY.net]
- つまり、型安全はプログラムの健全性を担保するものではなく、C++は型安全とは言えないって事で良いのでは。
- 837 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 23:02:50.75 ID:+RpJiFi7.net]
- jsてのは女子小学生の意味か?
- 838 名前:デフォルトの名無しさん [2019/12/12(木) 23:04:10.87 ID:hmkgwwLY.net]
- 型が無いと僕たちには辛すぎるよね。
ミスを発見してくれないから。
- 839 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 23:36:51.22 ID:Rc7qy7fw.net]
- 型はまあ重要だけど型ガーばっか言ってる奴は揃ってバカだよな。
- 840 名前:デフォルトの名無しさん [2019/12/13(金) 00:21:19.32 ID:0IHjBlJG.net]
- 型が無いとinsertがinsert_from_intとかinsert_from_stringとか別々にしないといけなくなって、色々大変そう。
呼び出し側が責任を持つということになるのかも。
- 841 名前:デフォルトの名無しさん [2019/12/13(金) 00:22:24.50 ID:0IHjBlJG.net]
- 型演算をコンパイラに任せることが出来なくなって、すべてプログラミングしないといけなくなるのかな。
- 842 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 06:47:47.05 ID:6WB0hlYg.net]
- >>824
むしろ(静的)型なんて俺には不要だぜ、ベイビーって奴の方がアホっぽいけどなw >>825-826 静的型付け 動的型付け あたりでググってこい
- 843 名前:デフォルトの名無しさん [2019/12/13(金) 07:17:35.68 ID:0IHjBlJG.net]
- 機械語は変数に型がない。
命令で型を使い分ける。 その大変さを考えると型欲しいってなるのかも。
- 844 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 07:24:37.08 ID:Ry/2QtNy.net]
- まさにBがCに進化するときの考え方だね
- 845 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 09:49:21.00 ID:wVkcEFxk.net]
- >>825
ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数 用意して使うと言う発想はスクリプト言語的な発想。 そのようにした場合、コンパイラが厳密にどの関数を使うかが人間には 分からない事が多いので安全性を損なう場合が多い。 スクリプト言語は RAD言語なのため、できるだけ短い関数名で対処しようと するが、それが思わぬ間違いを含みがち。 C言語が好かれているのは、どういう処理がされるかが人間が完全予測できる ことで、「大体の動作」は好まれない。
- 846 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 09:53:03.46 ID:wVkcEFxk.net]
- >>826
型の違いでコードを自動変化させるという思想は、C++の中でも非常に最近に なって STL (template) で流行りだしたもの。 もともとC言語に型が導入されたのは、プログラマのミスをコンパイラが発見して エラーを出してくれるようにするためだった。C言語には関数の多態性(overload) がない。なお、override と overload は別の概念なので、知らない人は検索して 欲しい。
- 847 名前:デフォルトの名無しさん [2019/12/13(金) 09:53:50.44 ID:0IHjBlJG.net]
- イネーブラ使えば良いのでは。
- 848 名前:デフォルトの名無しさん [2019/12/13(金) 10:00:20.89 ID:0IHjBlJG.net]
- コンセプトコイコイって感じなのかな。
- 849 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 11:27:07.79 ID:WVlIRY9+.net]
- #pragma omp parallel forで
自動分割され、各スレッドに割り当てられた ループの開始点と終了点を取得することできませんか?
- 850 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 18:09:24.89 ID:e6j7CnOm.net]
- >C言語には関数の多態性(overload)がない
さらりと嘘をつくやつがおるな
- 851 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 18:27:30.70 ID:fi1/rC5j.net]
- 今UE4と組み込み以外でc++の仕事あります?
- 852 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 18:33:53.16 ID:xTSwswyu.net]
- オーバーロードあるか?
ディスパッチの方法はいろいろあると思うが
- 853 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 18:55:58.62 ID:ftjAwgQI.net]
- >>836
USのマイクロソフトに行け
- 854 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 19:01:03.38 ID:ysGzQi5M.net]
- >>830
> ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数 > 用意して使うと言う発想はスクリプト言語的な発想。 え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ? 「同じ関数名の関数を複数用意」できるのは静的型付け言語の特徴だよ
- 855 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 19:52:22.32 ID:6WB0hlYg.net]
- >>839
> え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ? 関数は無理だがメソッドでいいならPowerShell
- 856 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 20:00:57.46 ID:ysGzQi5M.net]
- PowrShell は型付言語ですからね。
それぐらいでしょ?
- 857 名前:はちみつ餃子 mailto:sage [2019/12/13(金) 20:54:52.57 ID:1q9LzdDI.net]
- 用語としてメソッドと言ってるものでよければ Common Lisp もそうじゃね?
- 858 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:07:31.92 ID:KHLl2/ku.net]
- >>841
うん、1つあれば > え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ? の反例になるからね
- 859 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:09:15.79 ID:wKYhuojH.net]
- >>843
そしたら、一つぐらいしか無いって俺は意見を訂正するだけなんだが、 お前も同じ関数名の関数を複数用意できるのはスクリプト言語では PowerShellだけだって訂正するって話でいいの?
- 860 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:13:12.55 ID:gmdEaqRD.net]
- それでいいんじゃないの
- 861 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:23:18.13 ID:T1rtAOWF.net]
- 質問です
template <typename T> constexpr inline T value; template <typename T> constexpr inline T value = (T)0; こうやって変数テンプレートの宣言と初期化を分
- 862 名前:離すると
VC、clang(Xcode付属)ではエラーになるんですがwandboxで試すとエラーになりません 本来どっちの動作が正しいんでしょうか? [] - [ここ壊れてます]
- 863 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:37:57.11 ID:KHLl2/ku.net]
- >>844
別にそれでいいよ > え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ? が無知からの発言と認めてもらえればいいだけだしw
- 864 名前:デフォルトの名無しさん [2019/12/13(金) 22:26:34.23 ID:0IHjBlJG.net]
- >>846
これも通ってしまった。 #include <iostream> template <typename T> constexpr T value = 1; template <typename T> constexpr T value = 2; template <typename T> constexpr T value = 3; template <typename T> constexpr T value = 4; template <typename T> constexpr T value = 5; template <typename T> constexpr T value = 6; int main() { std::cout << value<int> << std::endl; }
- 865 名前:デフォルトの名無しさん [2019/12/13(金) 22:27:26.74 ID:0IHjBlJG.net]
- 実行結果。
Start 6 0 Finish 最後の定義が有効になってるように見える。
- 866 名前:デフォルトの名無しさん [2019/12/13(金) 22:28:16.14 ID:0IHjBlJG.net]
- Wandbox
C++ gcc HEAD 10.0.0 2019
- 867 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 22:54:36.18 ID:T1rtAOWF.net]
- ありがとうございます、その結果を見るとgccがおかしいぽいですね・・・
宣言時に初期化は必須と考えて書いていこうと思います、ありがとうございました
- 868 名前:デフォルトの名無しさん [2019/12/13(金) 22:57:06.09 ID:0IHjBlJG.net]
- 僕もちょっとわからないんだけど。
- 869 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 00:21:27.14 ID:stptR0oK.net]
- >>836
デスクトップアプリ
- 870 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 07:31:10.87 ID:SZLGcxYz.net]
- >>846
診断メッセージをよく見ろよ > error C2737: 'value': 'constexpr' オブジェクトは初期化する必要があります。 そもそも分離できないんだよ いいか、constexprは翻訳時定数だぞ それを翻訳段階9まで未解決のままにできると思うか?
- 871 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 08:56:55.09 ID:fBoJLlft.net]
- >>854
なんでできるようにしないの? そっちの方がおかしくね?
- 872 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 09:02:00.44 ID:SZLGcxYz.net]
- なんでという理由も述べたはずだが
- 873 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 09:53:01.66 ID:fBoJLlft.net]
- >>856
だからそれを可能にするようにしてくれ
- 874 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 10:02:03.90 ID:SZLGcxYz.net]
- ん? 俺は江添じゃねえぞ
奴なら標準会員だから言ってみるのもいいが
- 875 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 10:02:27.48 ID:SZLGcxYz.net]
- - 標準会員
+ 標準化委員
- 876 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 10:08:29.00 ID:yV/FURvf.net]
- 江添本ダメ絶対
- 877 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 10:30:50.58 ID:stptR0oK.net]
- 江添でもできない
- 878 名前:846 mailto:sage [2019/12/14(土) 10:35:10.86 ID:QUVSvjZy.net]
- >>854
>診断メッセージをよく見ろよ 見た上で言ってます(つまりgccまたはVC, clangのバグではないかということ >いいか、constexprは翻訳時定数だぞ それ以前にテンプレートなんですが
- 879 名前:デフォルトの名無しさん [2019/12/14(土) 12:26:05.30 ID:m0rD8Ode.net]
- ローマ法王は根競べで決めるらしいですよ奥さん。
- 880 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 12:26:49.81 ID:gw9aL+td.net]
- 誰でも閲覧できる規格ドラフト見ればすぐにわかることをこんな掃きだめで聞いても
- 881 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 12:35:13.30 ID:SZLGcxYz.net]
- >>862
なんかとんがってんな コンパイラのバグとまで言う根拠は何だ? 相場では規格票の条文だが テンプレートなのは見ればわかるさ だから何なのか説明をやめないでくれ
- 882 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 12:50:37.99 ID:gw9aL+td.net]
- >相場では規格票の条文
通産省の癖の抜けない老人はご退場いただきたい
- 883 名前:デフォルトの名無しさん [2019/12/14(土) 12:58:43.25 ID:m0rD8Ode.net]
- これODRの緩和と関係あるんですかね?
- 884 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:34:08.27 ID:T/HCOnVQ.net]
- >>772
>x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ 別に。 コアAの読み書きをコアA自身が見る分にはそうかもわからんが コアAの読み書きを異なるコアBから見たらwrite同士やread同士でも順番が入れ替わり得る (アウトオブオーダー実行の影響で 安全に動かすには適切にメモリバリアで順序化する必要がある
- 885 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:37:18.74 ID:JwYnIOEa.net]
- >>868
read ==> read read ==> write は入れ替わらない
- 886 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:37:51.96 ID:T/HCOnVQ.net]
- といってもロックレス何ちゃらぐらいの制御であればInterlockedCompareExchange()で済むから
スレッド間の通信なら普通メモリバリアとか直接触る必要は無いが
- 887 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:38:24.93 ID:T/HCOnVQ.net]
- >>869
迷信
- 888 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:39:11.91 ID:JwYnIOEa.net]
- ソースは?
- 889 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:39:40.59 ID:T/HCOnVQ.net]
- リードキューやコマンドキューにコマンドが入るのはアウトオブオーダープロセスの事後であるため
そのような保証は無い
- 890 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:41:05.07 ID:JwYnIOEa.net]
- それのソース
- 891 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:44:15.66 ID:JwYnIOEa.net]
- https://github.com/herumi/misc/blob/master/cpp/fence.md
|

|