智能指针RefBase、LightRefBase的incStrong、decStrong是不是线程不安全的?
(源代码:frameworks\base\libs\utilsRefBase.cpp/h)具体问题参见下面代码。
void RefBase::decStrong(const void* id) const
{
    ...
    const int32_t c = android_atomic_dec(&refs->mStrong);
 
    //1)假设A线程执行decStrong()到此处,如果此时线程B获得执行权,新创建sp智能指针,指向同一个对象obj;
    //2)然后执行权又回到线程A,接下来,decStrong()未做任何判断,直接delete掉了对象obj;
    //3)此后线程B再次获得执行权时,则其指针变成了野指针,指向一块垃圾内存,然后操作该指针时会出错。
    //是否会有该问题?如果存在问题,则在Android系统中,对该问题,是否有其他处理机制?

    if (c == 1) {
        const_cast<RefBase*>(this)->onLastStrongRef(id);
        if ((refs->mFlags&OBJECT_LIFETIME_WEAK) != OBJECT_LIFETIME_WEAK) {
            delete this;
        }
    }
    ...
}