トップページ > プログラム > 2015年11月24日 > f4S6RtN7

書き込み順位&時間帯一覧

8 位/190 ID中時間01234567891011121314151617181920212223Total
書き込み数1100010000000000200000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17 [転載禁止]©2ch.net

書き込みレス一覧

GCは失敗。メモリは自分で管理せよ! その2©2ch.net
47 :デフォルトの名無しさん[sage]:2015/11/24(火) 00:26:10.23 ID:f4S6RtN7
うーん質問がアバウトすぎたな。もう少し具体的に書くわ

例えば2chのある板を管理するプログラムを書くとして
BoardクラスとThreadクラスを想像してみてくれ
BoardはThreadオブジェクトを管理するが、Threadは
産まれたり死んだりと揮発的で寿命が定まらないと。
で各Threadは何らかの共有リソースを持つと。
例えば一度読み込んだ画像を各スレッドで共有したいとかが
考えられるけど、画像オブジェクトをshared_ptrで共有するのは
適切ではない
なぜならある瞬間に産まれたThread群がひとつの画像を共有する
からといってshared_ptrで持たせたとしても、後の更新時に
更にその画像を共有したいThreadが現れたときに、画像が
すでにあることを何らかの形で知れないといけないから。
結局Boardなんかが画像オブジェクトのコンテナを持つ必要が
あってそのコンテナへの追加と削除のために別の共有の
仕組みが必要になるんだよ。例えばThreadがBoardに画像を
リクエストして参照カウンタを持ったアクセサを返すようなもの
だから所有権はBoardひとりが持てばよくてshared_ptrを
使う必要がなくなるという理屈
こういったケースを踏まえてもshared_ptr使うケースって
ほとんどなくね
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17 [転載禁止]©2ch.net
309 :デフォルトの名無しさん[sage]:2015/11/24(火) 01:16:13.05 ID:f4S6RtN7
猿CM繋がりで「参加せざるをえない」をかけてるんじゃないか?
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
50 :デフォルトの名無しさん[sage]:2015/11/24(火) 05:26:33.27 ID:f4S6RtN7
>>49
いやいくらでも書いてるけど基本一緒
というか上の例もそのままマルチスレッドに適用できる話でしょ

例えばproducer consumerならproducerが所有権を持つし
thread per messageなら共有データはホストが持って固有データは
個別スレッドで持つだけ
むしろマルチスレッドの場合、所有者をより厳格に決めとかないと
泣く事になるぞ
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
54 :デフォルトの名無しさん[sage]:2015/11/24(火) 16:23:15.08 ID:f4S6RtN7
>>51
今のC++からshared_ptrをそのまま無くせって言ってるんじゃないぞ
shared_ptrのコピーを禁止にしてweak_ptrの対応だけあれば良くないかって事
そもそも何でそんなこと言うかっていうと、
GCない言語→循環参照ガー。みたいによく言われるけど使わないで
済むなら静的解析で循環参照の起こり得るケースをエラーにしてしまう
って解決方法もあるかなと思っただけ
あとshared_ptrとweak_ptrはアトミック操作とメモリバリアを必要としうるから
それに頼った設計は疑問を感じる
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
55 :デフォルトの名無しさん[sage]:2015/11/24(火) 16:37:54.42 ID:f4S6RtN7
一応言っとくと静的解析のくだりは新しい言語を
設計するとした場合の話ね
C++だとほぼ不可能だろうから


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。