|
2 / 2 / 1
Регистрация: 02.11.2017
Сообщений: 60
|
||||||
Неблокирующая функция15.05.2020, 09:54. Показов 28608. Ответов 94
Метки нет (Все метки)
у меня задача: написать функцию func test(f func(int) int, in1 <-chan int, in2 <- chan int, out chan<- int, n int) в package main.
она n раз сделать следующее 1. прочитать по одному числу из каждого из двух каналов in1 и in2, назовем их x1 и x2. 2. вычислить f(x1) + f(x2) 3. записать полученное значение в out Функция test должна быть неблокирующей, сразу возвращая управление. Функция f может работать долгое время, ожидая чего-либо или производя вычисления. Формат ввода Количество итераций передается через аргумент n. Целые числа подаются через аргументы-каналы in1 и in2. Функция для обработки чисел перед сложением передается через аргумент f. Код на go - вопрос как сделать функцию неблокирующей? в чем у меня ошибка? еще при сборке ругается cannot be extracted via extract ()
0
|
||||||
| 15.05.2020, 09:54 | |
|
Ответы с готовыми решениями:
94
Неблокирующая запись в файл Неблокирующая запись файла
|
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|
| 27.05.2020, 00:22 | |
|
Joker5555
Или можно вместо структуры завести дополнительные каналы с буфером n, обсуждалось уже такое Мне только непонятно, где здесь может быть гонка по считыванию? считыванию чего, какой переменной?
0
|
|
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
|||
| 27.05.2020, 00:28 | |||
|
Добавлено через 3 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||||||
| 27.05.2020, 00:31 | ||||||
|
Я подумал, что ошибки могут возникать, потому что каналы in1, in2, out не имеют буфера и забиваются, поэтому сделал вот так:
- две получают значения из in1 и in2 по мере поступления и направляют в каналы с буфером - еще две параллельно вычисляют f(x1) и f(x2), на случай если функция высчитывается долго (но при условии что она stateless) - пятая горутина получает итоговое значение и направляет его в out всё это сделано на случай если хитрость задачи в том что каналы забиваются, пока f() высчитывается но это всё ерунда, из входящих каналов все числа поступают без задержек если попытаться передать в out неверное значение (например произвольное), получаешь вполне конкретную ошибку panic: вы передали значение 12345, а нужно 67890
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
||
| 27.05.2020, 00:35 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|
| 27.05.2020, 00:38 | |
|
так нет никакой разницы по факту, считаешь ты f() параллельно или последовательно - результат одинаковый
0
|
|
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
||
| 27.05.2020, 00:44 | ||
|
panic: Got 142820 from output channel, should be 83602 да вот нет, это результат последовательного выполнения func Merge2Channels(f func(int) int, in1 <-chan int, in2 <-chan int, out chan<- int, n int) { x := 0 y := 0 for i := 0; i < n; i++ { go func() { out <- f(x) + f(y) }() x = <-in1 y = <-in2 } } По сути это и есть WA, с конкретным тестом. Просто RE срабатывает из-за тестирующей системы
0
|
||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||||||
| 27.05.2020, 00:48 | ||||||
|
У меня вот последовательное вычисление, и оно паник не выдаёт, только wrong answer
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
|
| 27.05.2020, 00:49 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||||||
| 27.05.2020, 00:49 | ||||||
я создаю одну горутину, которая всё делает последовательно
0
|
||||||
|
117 / 118 / 52
Регистрация: 19.12.2014
Сообщений: 612
|
|
| 27.05.2020, 05:37 | |
|
korvin_, WA - неверный ответ, но моему мнению, наебашили они охрененные тесты, которые хрен пойми, как работают
0
|
|
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||
| 27.05.2020, 11:23 | ||
|
(Интересно, что на это скажут те, кто и в секунду укладывался...)
0
|
||
|
0 / 0 / 0
Регистрация: 23.05.2020
Сообщений: 8
|
|
| 27.05.2020, 12:02 | |
|
Neko-neko, Действительно, лучше бы для Е тесты исправили. Непонятно что ему не нравится. Судя по отзывам тест на это задание в принципе не проходит, даже если оно корректно. Фиксить не будут, если боятся потерять результаты, непонятно почему бы просто не добавить ещё одно исправленное задание и засчитывать решение любого из них
0
|
|
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
||
| 27.05.2020, 12:23 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||||||
| 27.05.2020, 12:35 | ||||||
|
Я их послание понял так, что всё-таки у нас неправильное решение, чего-то мы не учли
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
||
| 27.05.2020, 12:39 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 23.05.2020
Сообщений: 8
|
|
| 27.05.2020, 12:54 | |
|
Joker5555, Данные и функция - инты, тут ничего не придумать, иначе RE. Вполне определённый порядок, вычитал один, вычитал другой, записал, с этим тоже проблем нет.
mplain, Очень сомневаюсь, но это мы узнаем только по итогу, если они опубликуют решение, конечно Если что-то не учли, то напишите что? Как можно писать код вслепую без требований?
0
|
|
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|||
| 27.05.2020, 13:12 | |||
|
Почти идеальная, чтобы осталось 40, которых они готовы обучать. С другой стороны: тех, кто её решил, уже учить нечему, можно уже сразу брать на работу :))) Добавлено через 1 минуту ("Ну пишем же...")
0
|
|||
|
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 11
|
|
| 27.05.2020, 13:13 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 27.05.2020
Сообщений: 4
|
|||||||
| 27.05.2020, 18:59 | |||||||
|
F PHP 7.3.5 OK - 285ms 2.00Mb В Послании так же писали, что в сети есть решение, которые считаются читерскими, по имени функции гуглится гитхаб, там что-то похожее на правду, но не запускал, чтобы не стать читером =) Смотрите сами. Выводил данные по Merge2Channels в stderr: да, там 30 итераций x1, насколько помню начитнается с 9, потом ++1 x2, начитается где-то между 250-270, потом ++3 данные поступают ровно, без задержек fx() не тормозит Merge2Channels запускается 2 раза Все по памяти, хз как посмотреть старые варианты отравок. Потратил, 70 попыток, запарился, сдаюсь =) Когда, кажется, что все правильно вот такая ошибка
Добавлено через 10 минут добавлю, если результат писать в stderr, то все идет своим чередом
0
|
|||||||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|||||||||||
| 27.05.2020, 19:49 | |||||||||||
канал продолжает ждать, а ждать нечего Добавлено через 9 минут
main запускает эту функцию дважды подряд, создаются две горутины, которые одновременно начинают посылать значения в out? И обе отрабатывают по 30 итераций? или в сумме? или они последовательно запускаются?
0
|
|||||||||||
| 27.05.2020, 19:49 | |
|
Функция поиска в массиве и указатели + функция сортировки и поиск найденного элемента
Функция sqrt: существует более одного экземпляра. Функция перегруженная Перегрузка операций: friend-функция или функция-член класса Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|