Что означает «_ = переменная» в sync / mutex.go - PullRequest
0 голосов
/ 22 января 2019

Синхронизация / mutex.go:

func (m *Mutex) Unlock() {
    if race.Enabled {
         _ = m.state
         race.Release(unsafe.Pointer(m))
     }
...

что означает _ = m.state?

Я знаю, var _ interface = Object означает проверку, если Object реализовал интерфейс.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Причина в том, что из журнала фиксации "_ = m.state" убедитесь, что m не равно nil.

commit 5bb3a66a973ea87494b9197091e8c1f122080627
Author: Rémy Oudompheng <oudomphe@phare.normalesup.org>
Date:   Mon Apr 8 23:46:54 2013 +0200

    sync, sync/atomic: do not corrupt race detector after a nil dereference.

    The race detector uses a global lock to analyze atomic
    operations. A panic in the middle of the code leaves the
    lock acquired.

    Similarly, the sync package may leave the race detectro
    inconsistent when methods are called on nil pointers.

    R=golang-dev, r, minux.ma, dvyukov, rsc, adg
    CC=golang-dev
    https://golang.org/cl/7981043
0 голосов
/ 14 марта 2019

Для принудительного считывания значения m.state и отметки датчика гонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...