Разни въпроси

  1. Предлагам да имаме една такава тема (тази), в която да питаме произволни въпроси за да не създаваме нова тема за всеки дребен въпрос.

    И започвам пръв: В следния примерен код пускам 100 горутини, които ще четат от даден небуфериран канал, чакам секунда за да знам, че са тръгнали всичките и пращам стойност по канала. Очаквам след като има 100 чакащи горутини, стойността да бъде прочетена от произволна горутина, но всъщност изглежда всеки път една и съща получава стойността. Защо така?

  2. Прав си, произволна go рутина от чакащите за четене ще извърши действието.

    На какво базираш заключението си, че всеки път една и съща go рутина прочита от канала? Какво точно означава "една и съща"? Очевидно всяка go рутина в програмата ти чете от канала точно по веднъж. Може би искаш да кажеш, че между различните пускания, го рутина с един и същи индекс прочита 1 и 2? Когато пусна твоя собствен пример получавам различни числа. Виж коментара ми в gist-а който си дал за пример. Както ще видиш, всяко изпълнение на програмата от коментара води до различен резултат.

  3. Да, имам в предвид, че между различните пускания една и съща горутина чете дадено съобщение. Май се сетих какъв е проблема, примера го пробвах в go play, а то може би прави някакво кеширане. Ти явно го пускаш локално и затова получаваш различни числа. Като се прибера ще пробвам и аз да го пусна локално за да видя дали тази теория ще се потвърди.

    EDIT: Да, локално работи както се очаква. Явно go playground-а е бил проблема.

Трябва да сте влезли в системата, за да може да отговаряте на теми.