170 похожих чатов

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

кода маленький

вкратце это worker pool который читает из канала данные, засыпает на N времени и повторяет сие действие

https://pastebin.com/7rMBgGWZ
залил код на pastebin

есть 2 вопроса.
1) Спустя некоторое время я ловлю дедлок, можете пожалуйста раскритиковать и указать где я накосячил с логикой?

2) Почему на 55 строке объязательно нужно делать fmt.Println(<-workers), если я попробую просто <-workers сделать, то поймаю на самом старте ошибку и код вообще будет ианче работать
как так получается? time.Sleep(1)не помогает в таком случае

1 ответов

8 просмотров

1. не используй pastebin, используй play.golang.org 2. почему у тебя Worker выполняет wg.Add(1)?! вообще-то wg.Add должен быть в начале цикла. https://play.golang.org/p/ESuboUUgF36 3. почему у тебя wg.Add(1) два, а wg.Done()’ов всего один?! wg.Wait же в таком случае вообще никогда не дождётся. честно говоря я пытался понять что ты хотел реализовать, но у меня не получилось. Объясни чего ты в конце концов хотел добиться

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
например asm AT&T ... label: .string "hi" ... # not error lea label(%rip), %rax # error ( not compile ) mov %rip, %rax # not error mov (%rip), %rax из форумов прочитал чт...
Simple Sorcerer
6
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Есть предложения, как подобное можно упростить?
Hemul GM
12
Карта сайта