参照カウントについて質問で
”単純な実装"では、共有オブジェクトの廃棄は最後に参照解除したスレッドで行われます。一斉に解放される場合、最後に参照されたスレッドが重くなります。とは、なぜ最後に参照されるとスレッドが重くなるのでしょうか?
また、"単純な実装"では、カウンタが0になったら、"自分で自分を"削除します。
この”自分で自分を"というところがポイントです。
何か、使われている変数を監視しているスレッドが存在して、
それが、カウントの値をチェックし、0であったら削除する
(これがGCですね)
とは違います。
とは何が違うのでしょうか?もしかして"単純な実装"は自分で自分を破棄してGCでは別の関数か何かで削除しているということでしょうか
あとそれぞれのスレッドが固有のオブジェクトを持っている場合、
"単純な実装"では
スレッドごとにオブジェクトの破壊コードが実行されることになります。これは破棄されるときのことをいっているのでしょうか?
No.3ベストアンサー
- 回答日時:
>回答ありがとうございます。
なんに使うのかはいまいちわかりません。何か例があればよいのですが・・・そうですね。よいアドバイスありがとうございました。そう言う事なら手を出さないほうが良いです。
mallocを使っていて困る時が来ると思うので、その時にガベージコレクションってなんで必要なんだろうって分ると思います。
ただし、勝手に開放するので厳密にCPUの使用率を制御したいときはじゃま物です。特にゲームの場合。
ゲームは参照カウントでは無い独自のガベージコレクションを実装している可能性が高いと思います。そのアルゴリズムは必要に応じて実装するので、こうしてると言えるものがありませんが、いろんなアルゴリズムやメモリ管理の仕組みを勉強してください。
No.2
- 回答日時:
>一斉に解放される場合、最後に参照されたスレッドが重くなります。
お願いですから、許してください。
”間違えました”と謝っているのですから。。。。
ホントに、ほんとにお願いです。
”最後に参照された" ==> "最後に参照解除した"
ということの誤りなのですよ!!!!!!
ほんとに、重ね重ね、申し訳ありません。
許してください
こちらこそ申し訳ありません。
コピペしたので間違えてあるのを忘れてました。
一斉に解放される場合、最後に最後に参照解除したスレッドが重くなります。の間違いでした。
No.1
- 回答日時:
前質問へのリンクを張ってもらわないと何のことか理解できないので注意してください。
http://okwave.jp/qa4906413.html
それを答えたのは私ではありませんが今言えるのは、「参照カウント」にしても「ガベージ・コレクト」にしても経験と知識の不足が理解を妨げてます。勉強熱心なのは感心しますが、そんなに何でも手を広げると本筋を見失いますよ。とりあえずは今の知識レベルでは手を出すべきではないと言わせてもらいます。
ガベージコレクトとか参照カウントをなんに使うつもりで調べてるのか教えてもらえれば現実的な実装方法などを紹介できると思います。場合によっては必要すらないかもしれません。
単に知りたいだけって話なら、ほかの事をもっと勉強すれば分かるようになるから「今は手を出すな」です。
回答ありがとうございます。なんに使うのかはいまいちわかりません。何か例があればよいのですが・・・そうですね。よいアドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Excel(エクセル) エクセル開いたらウィンドウがでました 2 2023/03/28 16:24
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- その他(自然科学) 論文のまとめに関して(小論文)添削お願いします。 6 2023/07/16 14:24
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- その他(プログラミング・Web制作) Pythonのオブジェクトの関数について 2 2023/05/11 19:15
- 数学 最大エントロピー原理をpythonで実装したい 2 2022/06/21 13:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Facebook Facebookのメッセンジャーは相手に送った後で、送信取り消ししたら、数分以内であれば、完全に取り 1 2022/08/28 12:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
Windows上で、シグナル(SIGTERM...
-
C言語である関数への同時アクセ...
-
待機関数(WaitForMultipleObjec...
-
スレッドの監視方法について
-
VB2005 シリアル通信のClose処理
-
マルチスレッドプログラミング...
-
msec単位のWait Timerが作れない!
-
MFC モーダルダイアログに動的...
-
.NetのBackgroundWorkerクラス...
-
マルチスレッドの実行順序の制御
-
Linuxでスレッド優先度って変え...
-
複数スレッドを動作させるのに...
-
メモリアクセスの競合について
-
スレッドにて同一メモリの書き...
-
PHP スレッド構成の掲示板について
-
VC++スレッドの正しい終了のさ...
-
pthread_attr_tへの値の代入に...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++スレッドの正しい終了のさ...
-
WaitForSingleObjectの使い方に...
-
マイクロソフトedge で5チャン...
-
スレッドの安全な終了のさせ方
-
スレッドの終了はどうやるんで...
-
スレッドにて同一メモリの書き...
-
スレッドの監視方法について
-
マルチスレッドについて
-
スレッドの終了の仕方
-
Linuxでスレッド優先度って変え...
-
Windows上で、シグナル(SIGTERM...
-
LinuxでDoEvents()同等機能
-
VB2005 シリアル通信のClose処理
-
待機関数(WaitForMultipleObjec...
-
マルチスレッドプログラミング...
-
_beginthreadexで生成したスレ...
-
別スレッドからメインダイアロ...
-
msec単位のWait Timerが作れない!
-
マルチスレッドのスレッド数を...
-
.NetのBackgroundWorkerクラス...
おすすめ情報