On Monday, 25 November 2019 at 09:24:43 UTC, Jonathan M Davis wrote:
On Monday, November 25, 2019 1:22:17 AM MST Andrej Mitrovic via Digitalmars- d-learn wrote:
From: https://github.com/dlang/phobos/blob/10b9174ddcadac52f6a1ea532deab3310d3a8 c03/std/concurrency.d#L1913-L1916:

-----
///
final @property bool isClosed() @safe @nogc pure
{
     synchronized (m_lock)
     {
         return m_closed;
     }
}
-----

I don't understand the purpose of this lock. The lock will be released as soon as the function returns, and it returns a copy of a boolean anyway. Am I missing something here?

It ensures that no other code that locks m_lock is running when m_closed is accessed. I'd have to study std.concurrency in detail to know for sure why that would be needed, but it's not atypical when trying to maintain consistent state when multiple threads are interacting with each other.

- Jonathan M Davis


Probably to be sure to have a consistent status returned. See for example:

https://github.com/dlang/phobos/blob/10b9174ddcadac52f6a1ea532deab3310d3a8c03/std/concurrency.d#L2250


Reply via email to