> It's because their destructors are called automatically when going out of 
> scope, without the protection of a lock, which can cause undefined behavior 
> when there're other referencers from other threads.

I came to the same conclusion. You can `move` the ref though which sets it to 
`nil` causing its destructor to do nothing. The destructor only looks at the 
local variable then which is thread local, the fact that it does that outside 
of a `lock` environment does not matter.

A dedicated annotation or a template would help to make it more convenient.

Reply via email to