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