游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7627|回复: 18

引用计数要用mutex来保证线程安全么

[复制链接]

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2007-8-30 21:08:00 | 显示全部楼层 |阅读模式
就是

class obj
{
public:
inc()
++numRef

dec()
--numRef
if(numRef) delete this;

}

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2007-8-30 21:08:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

if(numRef==0)

27

主题

418

帖子

455

积分

中级会员

Rank: 3Rank: 3

积分
455
QQ
发表于 2007-8-30 21:54:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

不知所云……

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2007-8-30 22:05:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

就一个指令还有什么安全不安全的

2

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2007-8-31 00:35:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

要的……

dec()
--numRef
if(numRef)

//如果执行到这里,另外一个线程使用了inc(),就不同步了。
delete this;

考虑到开销,如果要在多线程的程序里面使用,最好是自己在外面加锁比较好吧。

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2007-8-31 10:23:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

interlocked variables

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2007-8-31 11:37:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

我想也是.这个是引用计数,所以要经常使用.
同时我希望这个类能够被多个线程使用.
开销我也觉得是太大了.所以来问
然后我希望这个特性不是M$特有的.interlocked variables好像是ms特有的.
恩.我想这个类,能被GCC编译通过.同时用的线程库是pthread.

恩.这样行不行.

class obj
{
VOLATILE ref;
inc()
{
   ++ref;
}
dec()
{
       --ref;
        if(!ref) delete this;

}



21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2007-8-31 11:59:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

我主要是材质什么的要计数一下.
恩.好像这样还是有问题.如果配合自动指针,想想想想.......

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2007-8-31 12:11:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

好像只要做到先inc,后DEC.就没问题了.不需要什么线程同步的.

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2007-8-31 12:56:00 | 显示全部楼层

Re: 引用计数要用mutex来保证线程安全么

恩.是这样的啦.
本来是有问题的.但是如果用自动指针.严格的做到先inc,后DEC.就不需要同步了.   
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 01:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表