[過去ログ] C++相談室 part156 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2021/05/19(水)10:55 ID:LZZifCH2(1/2) AAS
前スレ
C++相談室 part155
2chスレ:tech
973(1): はちみつ餃子 ◆8X2XSCHEME 2021/08/08(日)15:50 ID:3b5W4SC5(1/3) AAS
>>972
auto は C から引き継いで C++ にも以前からあったキーワードだけれど、
誰も使ってなかったから元の意味を廃止してあらたな意味で使われるようになった。
廃止されたのは auto の以前の使い方であってキーワード自体は廃止されてない。
974: 2021/08/08(日)16:04 ID:b7/SG9Fy(2/3) AAS
値の参照値変数を伴ない値参照とでもいうべきか
975: 2021/08/08(日)16:06 ID:tnUFWQWl(2/2) AAS
釣りじゃないなら、とりあえず右辺値参照でググって一通り読んでこい
ここで全部説明してると長すぎる
976: 2021/08/08(日)16:07 ID:b7/SG9Fy(3/3) AAS
forループとかココらへんはコンパイラの最適化によっては&参照とあんま変わらんよな
977: 2021/08/08(日)16:15 ID:o6Sz00kX(2/2) AAS
auto && に関しては右辺値参照とは限らないというのもまたややこしい
978(1): はちみつ餃子 ◆8X2XSCHEME 2021/08/08(日)16:16 ID:3b5W4SC5(2/3) AAS
>>972
&& は普通は右辺値参照を意味するが、一部の状況では万能参照になる。
(言語仕様上は万能参照とは呼ばれないが通例としてそう呼ぶことが多い。)
初期化子によって左辺値参照か右辺値参照かを自動的に選択するので、
よく理解できてないなら範囲for文をつかうときは && にしておけと入門者に勧める解説はよく見る。
実際、その状況では auto& と書いても結果は変わらない。
979(1): 2021/08/08(日)16:53 ID:Hwfa9w/d(2/2) AAS
>>973
>>978
ありがとう・・・!
メモっとく
980: はちみつ餃子 ◆8X2XSCHEME 2021/08/08(日)17:22 ID:3b5W4SC5(3/3) AAS
>>979
言葉の様子からは昔の C++ (C++03 以前) は使ってたのかな?
と推察するけど、 C++03 と C++11 の間では大きな飛躍があって、
その後も変更は色々あるのでちょっとしたことをいちいち質問するのは効率悪いと思う。
ドキュメントを網羅的にわかりやすく整理しているとてもありがたいサイトがいくつかあって
仕様改定がどういうものだったのかもまとまっているので参考にするといいよ。
外部リンク[html]:cpprefjp.github.io
外部リンク:ja.cppreference.com
981: 2021/08/08(日)19:31 ID:R0ImpkBa(1) AAS
std::threadってなぜかスレッドが実行中かどうかを調べるだけの関数がないんだよね
絶対にあった方が良いと思うんだけどなんか理由があるのかな
982: 2021/08/08(日)19:40 ID:Cdmlpdjr(1) AAS
joinableだけじゃ足りん?
983: 2021/08/08(日)19:45 ID:8fWNQyKy(1/3) AAS
pthreadsにそういうAPIが無いからなぁ
984: 2021/08/08(日)19:55 ID:GYDyEW6S(2/4) AAS
pthread_timedjoin_np()使えばいいじゃない
985(1): 2021/08/08(日)20:02 ID:8fWNQyKy(2/3) AAS
none portableじゃないですかやーだー (でも使う)
標準としては難しそう
986: 蟻人間 ◆T6xkBnTXz7B0 2021/08/08(日)20:27 ID:7BKdY7dG(1) AAS
native handleをgetしてWaitForSingleObject使うとか
987: 2021/08/08(日)20:52 ID:GYDyEW6S(3/4) AAS
>>985
nandemo portable の略だから大丈夫
988(1): 2021/08/08(日)21:39 ID:yBkpHZYz(1/3) AAS
普通にミューテックスで排他して状態管理せよ……
だいたいスレッドが動いているかどうかという1 bitだけを外部が欲しがるという用途は(join操作そのものを除き)あんま無く、
キュー的なブツに対するデータの排他的な出し入れが普通伴うはず……
989(2): 2021/08/08(日)21:44 ID:yBkpHZYz(2/3) AAS
ミューテックスで数千クロックサイクル浪費するのが嫌という向きは知らん
スピンロックとかdouble-checking lockみたいな対策になるかと思うが絶対安全かつポータブルな
方法というものは無くなる希ガス
990: 2021/08/08(日)22:18 ID:GYDyEW6S(4/4) AAS
>>988
速度重視でmap/unordered_mapでコンテナ作ってみたけどやっぱり仕様変更に耐えられるvector/listコンテナ最強的なオチに似たものある
991: 2021/08/08(日)22:43 ID:8fWNQyKy(3/3) AAS
キューへの投入と取り出しがそれぞれ1スレッドだけならミューテックスを使わなくてもアトミック変数だけで排他出来る(OSに仲裁してもらわなくていい)
992: 2021/08/08(日)23:27 ID:yBkpHZYz(3/3) AAS
OSの助けなしにどうやって待ち(と起床)を実現するつもりなんじゃ……
993: 2021/08/08(日)23:43 ID:2XV4yDHI(1) AAS
スレッドが実行中か確認したいってどんなときなのかな?
確認したところで次の瞬間には終了してる可能性あるわけじゃん
終了を待機したいならjoinすればいいし実行中をなんのために確認したいのかよくわからん
994: 2021/08/09(月)00:16 ID:bkD+cive(1/2) AAS
Linuxのpthread_mutexの実装で使われているfutexも競合しないタイミングならユーザランドだけで処理が完結する (OSが仲裁する必要があるのは競合する場合だけ)
> Futex operation occurs entirely in user space for the
> noncontended case. The kernel is involved only to arbitrate the
> contended case. As any sane design will strive for
> noncontention, futexes are also optimized for this situation.
>
> 外部リンク[html]:man7.org
キューが固定長, 投入スレッド1つ, 取り出しスレッド1つという条件でならアトミック変数2つ(読み出し位置, 書き込み位置)で「競合しない」ように出来るので, OSの仲裁が必要じゃなくなる
995: 2021/08/09(月)00:22 ID:bkD+cive(2/2) AAS
あと(pthread_mutexのようなネイティブの)mutexはそういう理由で大抵の場合は最速のロック機構になっているので, 自分で作るなら普通にmutex使った方がいいというのは同意
素人(俺とか)の考えたロックフリーデータ構造とか大抵設計か実装かその両方でバグが入る
996(1): 2021/08/09(月)07:54 ID:eF2Q2UUf(1/2) AAS
>>989
mutexが遅くてイヤならatomicじゃね?
997: 2021/08/09(月)09:47 ID:TRAo/ccI(1/3) AAS
>スレッドが実行中か確認したいってどんなときなのかな?
排他制御付きのキューを自力実装するときまれによくある……
キューがあふれそうになったときpushする側(producer)を待たせる作りにした場合、
popする側(consumer)はデータをpop後、producerが待っていたらその待ちを解除、
待っていなかったら何もしないという判断が居るのでこのためのフラグ
(producer側にpushを継続する意思があるかどうか、またはpush待ち中かどうかを表すフラグ)が居る
producerよりconsumerがいつも速い見込みでキューがあふれない前提(キューが必要に応じていくらでも大きくなる)
だったりその他(待ち解除が条件変数ではなくキューイングされるイベントだったり)だと無くてもよいから
ぜってー必要か、というとビミョーだがあった方がすっきり効率的なコードとして書ける
998(1): 2021/08/09(月)09:51 ID:TRAo/ccI(2/3) AAS
>>996
インターロックドインクリメントはまれによく使う
インクリメントに性交したら排他的操作権を獲得できた証、
999: 2021/08/09(月)09:55 ID:TRAo/ccI(3/3) AAS
となるようにインクリメントするカウンタの意味を仕向ける
1000: 2021/08/09(月)09:55 ID:eF2Q2UUf(2/2) AAS
>>998
アンカーミスってねい?
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 81日 23時間 0分 8秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.292s*