многопоточность это одно приложение а тут, получается, несколько (если я правильно понял) это, вероятно, масштабируемо, но невероятно медленно получится
Вообще все.
Ну например?)
любые примитивы синхронизации
Т.е. если хочешь быстрый многопоточный код - пиши его не используя каналы и пакет sync. И крайне желательно с минимумом ветвлений и циклов
Я не представляю как без каналов данные в потоки бросать, ведь канал это же тот же массив, не?
а можете пример такого кода? я видимо не знаю чего-то важного, многопоточность это же горутины? значит надо ждать от них ответ как-то... это либо каналы либо вейт груп... или еще что-то?
Всё в одной горутине. Запрос получили, создали горутину и в ней весь процессинг от и до.
Звучит как мап-редьюс
Для http сервера подойдет такое? Например внутри обработчика входящего запроса запустить горутину?
не, как shared nothing + run to completion
Зачем, если http-хендлер уже запущен в горутине?
Передача пакета в горутину?)
Мне кажется, что ты просто перекладываешь работу по синхронизации на базу данных. А это будет ещё медленнее
кейс: внутри обработчика мне нужна запустить функцию, которая проходит по массиву удаленных компов и вызывает у каждого powershell команду, сейчас они работают через WG, каждая в своей горутине. Вы хотите сказать, что если запустить без горутины будет быстрее? или я чего-то не понимаю :(
в этой задаче уже не имеет значения, т.к. вы ждёте чего-то во внешнем мире.
То есть вы говорили про многопоточность внутри методов и функий пакета, верно?
Не пакета, а всей программы.
Вот тебе канал
Обсуждают сегодня