Size: a a a

2020 April 02

АП

Александр Попов in Go-go!
Daniel Podolsky
бесполезно так спрашивать. или не знают, или знают, но не понимают, что из этого следует

хорошо спросить - чем Mutex от RWMutex отличается
ну RW это фактически два мьютекса...
источник

VM

Vladislav Milenin in Go-go!
Daniel Podolsky
бесполезно так спрашивать. или не знают, или знают, но не понимают, что из этого следует

хорошо спросить - чем Mutex от RWMutex отличается
Один позволяет читать при записи, другой лочит чтения. Все?)
источник

DP

Daniel Podolsky in Go-go!
сколько RLock можно получить на одном мутексе? что будет, если запросить Lock не сделав RUnlock?

и вот если отвечает (хорошо, если каждый 10) - тогда можно и успокоиться
источник

АП

Александр Попов in Go-go!
Daniel Podolsky
сколько RLock можно получить на одном мутексе? что будет, если запросить Lock не сделав RUnlock?

и вот если отвечает (хорошо, если каждый 10) - тогда можно и успокоиться
один? O_o
источник

DP

Daniel Podolsky in Go-go!
источник

АП

Александр Попов in Go-go!
я что-то думал там булеваое
источник

АП

Александр Попов in Go-go!
а там int32 получается
источник

DP

Daniel Podolsky in Go-go!
источник

АП

Александр Попов in Go-go!
лучше бы прояснил, толку то смайликами флудить
источник

АП

Александр Попов in Go-go!
я только опираюсь на статью - https://habr.com/ru/post/271789/
источник

RS

Roman Sharkov in Go-go!
а зачем тогда RLock если есть Lock?  😅
источник

АП

Александр Попов in Go-go!
Roman Sharkov
а зачем тогда RLock если есть Lock?  😅
lock то на запись
источник

АП

Александр Попов in Go-go!
// я могу смело использовать RLock() для счетчика, так как он не меняет данные
func count() {
rw.RLock()         // <-- заметьте букву R в RLock (read-lock)
defer rw.RUnlock() // <-- заметьте букву R в RUnlock()
return len(sharedState)
}

// Но я должен использовать Lock() для set(), который меняет данные
func set(key string, value string) {
rw.Lock()                // <-- заметьте, тут мы берем "обычный" Lock (write-lock)
defer rw.Unlock()        // <-- а тут Unlock(), без R
sharedState[key] = value // <-- изменяет состояние(данные)
}
источник

АП

Александр Попов in Go-go!
в статье дается только такой код, что там внутри - не смотрел
источник

RS

Roman Sharkov in Go-go!
Александр Попов
lock то на запись
мне кажется shared & exlusive лучше усваивается чем read & write

shared = много
exclusive = только один


читать могут много одновременно, а записывать - только один.
Если хоть один читает - записывать нельзя, если один записывает - никто не читает.
источник

SA

Sky Alex in Go-go!
А вопрос про ехо канал актуален.
Как можно сделать что б все горутины которые ждут чтение из канала получили сообщение?
источник

DP

Daniel Podolsky in Go-go!
закрыть канал
источник

АП

Александр Попов in Go-go!
Sky Alex
А вопрос про ехо канал актуален.
Как можно сделать что б все горутины которые ждут чтение из канала получили сообщение?
цикл и много каналов - если нужен броткаст, или закрытие канала всем рассылается
источник

АП

Александр Попов in Go-go!
Roman Sharkov
мне кажется shared & exlusive лучше усваивается чем read & write

shared = много
exclusive = только один


читать могут много одновременно, а записывать - только один.
Если хоть один читает - записывать нельзя, если один записывает - никто не читает.
я просто запомнил что есть преобладает чтение то RWMutex, если поровну - Mutex
источник

RS

Roman Sharkov in Go-go!
Sky Alex
А вопрос про ехо канал актуален.
Как можно сделать что б все горутины которые ждут чтение из канала получили сообщение?
можно закрыть канал, но это скорее не “сообщение” а уведомление о том, что в этот канал сообщений больше поступать не будет. Вопрос, предполагаю, был про broadcasting?
источник