What is the point of a synchronized lock on a single return statement?

Jonathan M Davis newsgroup.d at jmdavisprog.com
Mon Nov 25 09:24:43 UTC 2019


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





More information about the Digitalmars-d-learn mailing list