Delphi的线程同步的Mutex是引用计数的吗?引用计数的作用是什么?

Delphi的线程同步的Mutex是引用计数的吗?引用计数的作用是什么?

1个回答

Mutex是互斥量,并且Mutex是可以跨进程的,所以开销比较大,它是操作系统封装的。它的用处,比如防止程序多开,进程同步等等。
线程同步用信号量临界区就可以了。

引用计数有不同的含义,通常我们说是指com对象的垃圾回收机制。com对象每创建一个引用指向它,引用计数+1,不再引用就-1,如果引用计数为0,代表com对象可以垃圾回收。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复xumenger: 是的。
接近 5 年之前 回复
xumenger
xumenger 回复caozhy: 那么你看我这样的理解对不对:Mutex之所以能够跨进程实现线程同步,就是Mutex是进程间共享的,假如在一个进程A中创建一个Mutex的话,这个Mutex也会在另一个进程B中获取到;如果进程A关闭的话,它不会随着进程A关闭,还可以在进程B中使用
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复xumenger: “有人说”这个初学者往往看事物很片面。比如说,汽车为什么能开?你应该这么理解,因为汽车生产出来的目的就是为了开,否则就是铁皮房而不是汽车了。当然,一些初学者纠结实现的细节,说因为内燃机驱动,所以汽车可以开。貌似有理。起始反倒让你困惑。你会问电动汽车为什么没有内燃机也能开?当然你可以解释,因为电机也能将电磁能转化为机械能。但是这样解释永远不得要领。再来一种别的汽车呢?所以本质不在这里,而是汽车就是能开的。至于怎么开,是汽车工程师的事情。
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复xumenger: 操作系统决定的。操作系统掌握整个计算机的资源,它可以让某些数据在进程间共享,另外一些每个进程独立。至于操作系统内部用什么方法,我觉得这不是关键的问题。只要它能实现就可可以了。
接近 5 年之前 回复
xumenger
xumenger 回复caozhy: 因为我之前问一个问题:为什么mutex能够实现跨进程的线程同步,有人回答是因为mutex是引用计数的,但是我看的资料中都没有提及这点,所以我比较想问清楚这个问题
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 临界区可以看作是信号量的特例。事件对象基于信号量实现
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复xumenger: 互斥量是进程同步用的,当然线程也能用,但是不推荐。信号量、临界区是线程同步用的。是不是引用计数这个是操作系统内部实现的问题,对你是透明的。
接近 5 年之前 回复
xumenger
xumenger 那么互斥量是不是引用计数的呢?另外临界区、互斥量、信号量、事件对象这四种实现线程同步的方式各自适用的场景是什么样的呢?
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐