kref机制就是增加一个atomic_t refcnt,当访问时+1,访问完成时-1,避免在访问过程
中释放。
比如
kref_get(kref *obj)
{
atomic_inc(&obj->refcnt);
}
kref_put(kref *obj)
{
if(atomic_dec_and_test(&obj->refcnt)){
call_kref_release_cb(obj);
}
}
现在有个问题
1. if(p)
4 kref_get(p);
2. if(atomic_dec_and_test(&p->refcnt))
3 free(p);
如果发生的时序按照1234的排列的话,怎么办?
--
FROM 183.48.33.*