Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (1)
  • Как писать в канал без блокировки golang?

    @fops9311
    Добрый день.
    Насколько я понял для такой задачи каналы не особо подходят.
    Если в случае новой записи в канал данные теряют актуальность, то лучше применить замыкания например так:

    func Entangle() (in func(interface{}), out func() interface{}) {
    var data interface{}
    var mu sync.Mutex
    in = func(d interface{}) {
    mu.Lock()
    data = d
    mu.Unlock()
    }
    out = func() interface{} {
    mu.Lock()
    d := data
    mu.Unlock()
    return d
    }
    return in, out
    }
    и с помощью возвращенной функции in - писать, а с out - читать.
    Можно так же применить мьютекс для гарантии целостности данных при конкурентном считывании и записи, так же замкнутый между этими двумя функциями, но это иногда может быть не обязательно
    Ответ написан
    2 комментария