[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
442
(4): デフォルトの名無しさん (ブーイモ MM7f-5+wm) [sage] 2024/09/06(金) 11:54:45.03 ID:onD85wsiM(1) AAS
>>440
440(2): デフォルトの名無しさん (ワッチョイ 5f00-+rLF) [] 2024/09/05(木) 18:17:57.29 ID:xTcyjaky0(1) AAS
shared_ptrを使いたくなったら設計を見直すべき
マルチスレッドセーフ考えたら使わざるを得ない場合は多々ある
言ってる意味がわからないならお前は経験不足
447
(2): デフォルトの名無しさん (ワッチョイ 8763-0xUn) [sage] 2024/09/07(土) 20:17:38.39 ID:Ci+xhqlU0(1/2) AAS
>>442
むしろshared_ptr<T>でスレッド間共有オブジェクトを保持するのは
生ポに対するshared_ptr<T>のメリットが無い……
可能な限りスレッド間共有なんてことはやめてconstオブジェクトのコピーにするのが正義……

>>439
439(1): デフォルトの名無しさん (アウアウエー Sa1f-XN8b) [] 2024/09/05(木) 00:06:16.92 ID:/oUqYYg3a(1) AAS
相互参照も自己参照も一緒
自己参照なんて参照してるのは自己ではない
ホントの意味での自己参照は循環参照
自己参照ではないが前方宣言が必須の例、
class TreeNode;

class TreeNode {
  std::shared_ptr<TreeNode> m_pLeft;
  std::shared_ptr<TreeNode> m_pRight;
public:
  TreeNode();
  ...
};
  
449: デフォルトの名無しさん (ワッチョイ 27ea-60ma) [sage] 2024/09/07(土) 21:38:34.24 ID:lSV8lU690(2/2) AAS
>>442
使わざるを得ないは言い過ぎじゃね
同期取るのにshared_ptrのアトミック保証に依存するしか方法が無いの?
競技プログラマか何かか?
466
(1): 447 (ワッチョイ d763-HdVQ) [sage] 2024/09/21(土) 20:05:42.93 ID:FUSKAHoo0(1/3) AAS
何やら集中砲火を浴びている>>442 やが
マルチスレッド状況でshared_ptr<T>を超有効活用できる手が一つあったわ;;;

スレッド間の共有オブジェクトをポインタpで保持する際の問題点は、
そのポインタを知っている複数スレッドの間でpが指すオブジェクト*pへのアクセスを悉く排他制御せなばならない点やが
逆にpを知っているスレッドが任意の時刻につき1つだけなら、オブジェクトのアクセスに対して排他の必要が無い
それでいてスレッドへのデータの受け渡しに関してコピーの手間は減らせる

例:
なんちゃらWorkerスレッドオブジェクトをshared_ptr<Worker>のキューで保持しておく
スレッドfooが使うときWorker1をshared_ptr<Worker>としてpopする(←これは排他が要る
スレッドbarが使うときWorker2をshared_ptr<Worker>としてpopする(←これは排他が要る
...
(スレッドfooやbarはWorker1、2をそれぞれ独占的に使用できる) ←重要
...
スレッドfooが使い終わったWorker1をキューにpushする(←これは排他が要る
スレッドbarが使い終わったWorker2をキューにpushする(←これは排他が要る
470: デフォルトの名無しさん (ワッチョイ 1e52-VArp) [sage] 2024/09/25(水) 13:57:54.93 ID:N5yN4IuU0(1) AAS
>>466
>>442 を書いたのおれだけど、なんでおれが集中砲火浴びてることになってんだよ
生ポとか意味不明なこといってる>>447は一見してわかるクソレスだろ

おまえはそれ以上のクソレスにクソコード
でもお前の勝ちだ
クソコードに2週間かけた情熱に免じて親切におしえてやるわ

shared_ptrはpに誰かがアクセスしている可能性がある間は決してdeleteされないことを保証できるのが肝
(pの先の排他ではこれは実現できない)

もちろんこれも正しく使わないと保証できない
よくあるミスは知ったかぶって参照カウントを操作しないようにshared_ptrを参照渡しとかにするやつな
その間に絶対deleteされない保証がないならやってはいけない
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.907s*