Конкурентные операции
Всем привет Появилась пара заданий в учебном курсе, в которых требуется, например,сделать запись значений в мапу КОНКУРЕНТНО, возвести значения в квардрат КОНКУРЕНТНО и еще несколько в которых тоже что-то нужно деать КОНКУРЕНТНО. Я вот никак не могу понять, что значит конкурентно? Моржет ли кто-нибудь привести пример именно конкурентных операций, но настолько простой пример, как будто ребенку показывать будете.
Если важно то язык go, но не думаю что такие вещи привязаны к языку
Вот как я понял. Задача ё
Написать программу, которая конкурентно рассчитает значение квадратов чисел взятых из массива (2,4,6,8,10) и выведет их квадраты в stdout.
Вот какое у меня решение если под конкурентностью подразумевается параллельные вычисления.
package main
import "fmt"
func square(num int) {
fmt.Println(num * num)
// fmt.Fprintln(os.Stdout, num*num)
}
func do() {
nums := [...]int{2, 4, 6, 8, 10}
for _, num := range nums {
go square(num)//параллельные вызовы square
}
fmt.Scanln()
}
Ответы (2 шт):
Насколько я понимаю, это плохая калька с английского concurrent, т.е. одновременно или параллельно.
Когда несколько операций выполняются параллельными потоками. Например, есть числа от 1 до 10 и вы их многопоточно возводите в квадрат, чтобы затратить на это меньше времени. Или что-то записываете в какой-то контейнер из разных потоков. И т.п.
Update: Как правильно замечают в комментарии, есть мнение, что concurrency и parallelism - это не совсем одно и то же. На мой взгляд это вопрос философский. Нужно смотреть реализации конкретных концепций в конкретных языках программирования для понимания деталей. Вот например асинхронность - это действительно не тоже самое, что параллельное исполнение.
Вообще, есть же такой же глагол калька с английского "конкурировать" и существительное "конкуренция", возможно в данном случае это вот про конкуренцию за некоторый ресурс. И обычно такая конкуренция обеспечивается именно тем, что разные ветви кода выполняются в разных потоках.
Конкурентными называются операции, которые пересекаются друг с другом во времени. Например, конкурентной записью в словарь называется ситуация, когда один поток начинает записывать что-то в словарь пока второй поток заканчивает делать то же самое.