Многопоточность для языка программирования Go с Go Multiple
Вопрос "go multiple" не является четко определенным. Если речь идет о возможности запуска нескольких горутин в Go, то ответ будет следующим:
Go предоставляет возможность создавать и запускать несколько горутин для параллельного выполнения кода. Это достигается с помощью ключевого слова "go", которое позволяет запустить функцию в отдельной горутине. Например, для выполнения двух функций одновременно можно написать следующий код:
go
func foo() {
fmt.Println("foo")
}
func bar() {
fmt.Println("bar")
}
func main() {
go foo()
go bar()
}
В данном примере функции "foo" и "bar" будут запущены в отдельных горутинах одновременно, и их вывод будет перемешан.
Также в Go существуют инструменты для управления несколькими горутинами, например, каналы и мьютексы. Каналы позволяют синхронизировать выполнение кода в нескольких горутинах, а мьютексы - блокировать доступ к общим ресурсам. Например:
go
func worker(input chan int, output chan int, done chan bool) {
for num := range input {
// Выполняем задачу с номером num...
result := num * 2
// Отправляем результат в канал output
output <- result
}
// Работа закончена, отправляем в канал done сообщение
done <- true
}
func main() {
input := make(chan int)
output := make(chan int)
done := make(chan bool)
// Создаем 10 горутин для выполнения задач
for i := 0; i < 10; i++ {
go worker(input, output, done)
}
// Заполняем канал input задачами
for i := 0; i < 100; i++ {
input <- i
}
close(input)
// Получаем результаты из канала output
for i := 0; i < 100; i++ {
result := <-output
fmt.Println(result)
}
// Ждем, пока все горутины закончат работу
for i := 0; i < 10; i++ {
<-done
}
}
В данном примере мы создаем 10 горутин "worker" для выполнения задач. Задачи отправляются в канал "input", а результаты - в канал "output". После того, как все задачи будут выполнены, мы будем получать результаты из канала output и выводить их в консоль.
Таким образом, в Go можно легко создавать и управлять несколькими горутинами для параллельного выполнения кода.