假设有多个线程需要锁住N个相同的对象,为了避免死锁,对每个对象的锁进行排序(比如地址),依次上锁
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的生命周期。