On Tue, 08 Apr 2014 11:54:45 -0400, Spacen Jasset
<spacenjas...@mailrazer.com> wrote:
On Tuesday, 8 April 2014 at 15:18:20 UTC, Steven Schveighoffer wrote:
Just a word of caution, I don't think the RAII semantics of File work
properly in multithreaded code when the File is destroyed by the GC.
What do you mean by don't work? I can see that it won't be RAII anymore
since there is no stack scope. However, I expect it to get closed
properly - as and when the containing object is collected, or when you
use the scope keyword with a class object.
Is this not so?
The reference count inc/dec is not thread-safe, so if the GC collects your
object in a thread that is not the original thread, it may be racing with
your thread that's simultaneously inc/dec the reference count.
What can you do?
1. Single threaded program.
2. destroy the class deterministically with destroy(x);
3. Ensure the file reference is unique, do not share it with any other
objects.
-Steve