同时锁多个对象

假设有多个线程需要锁住N个相同的对象,为了避免死锁,对每个对象的锁进行排序(比如地址),依次上锁

shared_ptr 和 weak_ptr, 父子持有

parent持有child的shared_ptr,child持有parent的weak_ptr

弱回调技术

shared_ptr在构造的时候,支持指定释放函数。假设parent使用了 enable_shared_from_this 后,支持通过shared_from_this来获得this指针的shared_ptr(前提:parent自身必须得由shared_ptr引用),在传入bind的函数对象前转为weak_ptr,这样就能在释放回调函数中使用parent的weak_ptr了。在这种情况下,可以使用weak_ptr来检测parent是否有效,在保证安全的情况下,又不会增加parent的生命周期。

共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day