On 5/21/15 8:40 AM, Kagamin wrote:
On Thursday, 21 May 2015 at 12:33:33 UTC, Steven Schveighoffer wrote:
At this moment, a thread-local-only heap pointer must deal with
multi-threading issues simply because destructors can run on another
thread, even though the reference is thread-local. The biggest example
right now is reference-counted structures such as std.stdio.File.

You mean the reference counting part?

Yes, if you put a File as a class member, the destructor of the class would call the File's destructor, which could be run in any thread. Since File is a reference counted wrapper, the destructor decrements the reference count and possibly closes the file. The whole operation must be atomic if we are spread across threads.

But if you only ever access that containing class in a local thread, you are paying the cost of locking (or at least atomic decrement) for all reference counts on that file, for very little reason. Especially if the File doesn't live in a heap object (dtor doesn't know where it's being called from).

-Steve

Reply via email to