增加引用计数的经验法则是什么?

Cra*_*enz 6 c reference thread-safety

将引用计数对象发送到其他线程时,在启动线程之前或在线程内增加计数是否更好的经验法则?

在更一般的意义上,我(作为一个函数)是否应该假设传递给我的参数已经被考虑?

R..*_*R.. 4

在将对象传递到的新线程中增加计数几乎肯定是错误的。“父”线程中的任意数量的代码可能会在新的“子”线程开始运行之前运行,在这种情况下,“父”线程中的函数可能会返回,执行一些其他操作,将引用计数减少到 0 ,并释放该对象。然后,新线程将触及无效内存,调用未定义的行为,一切都会失败。

还请注意,此类错误可能会在很长一段时间内未被检测到,因为从统计角度来看,新线程不立即运行是不寻常的。事实上,最先发现该错误的可能是您的客户/客户...:-)