170 похожих чатов

Есть такая структура кода: несколько отдельных функций, которые что-то выполняют.

Для удобства пользователя есть одна основная функция Run(), которая внутри просто последовательно вызывает все другие, более мелкие функции, чтобы можно было использовать только одну её, вместо того, чтобы по-отдельности вызывать каждую маленькую функцию.

Эта основная Run() функция выполняет полностью всю работу, необходимую от неё. То есть, конкретно в моем случае, создаёт докер контейнер, выполняет его, собирает с него логи и удаляет этот контейнер.

Отдельные функции пользователю запускать именно в горутинах будет бессмысленно, так как важен порядок их выполнения. То есть с горутинами получится так, что контейнер может быть сначала удалён, только потом создан и никогда не остановлен, что, очевидно, не то, что от программы ожидается.

Эта основная функция Run() делает всё, что нужно и в правильном порядке.

Вопрос в том, насколько безопасно с точки зрения последовательности выполнения кода запускать Run() в горутине? Гарантированы ли последовательные вызовы всех функций внутри Run()? Правильно ли я понимаю, что concurrency в данном случае затронет только выполнение нескольких запусков Run(), но не того, что внутри них? То есть можно ли в цикле запустить несколько горутин Run() и быть спокойным, что всё выполнится правильно?

2 ответов

3 просмотра

То есть, если обобщить всё, то вопрос сводится к: "если функция запущена в горутине, то в таком же ли порядке выполняются действия, как и при запуске без горутины?" Да, в таком же порядке. Главное - это следить за доступом к каким-то общим ресурсам

synalice- Автор вопроса

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
How to create an OS in C? what to study?
Linus
18
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта