Ненахов А.С. СОВРЕМЕННЫЕ МЕТОДЫ МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ГОРУТИН И ЯЗЫКА ПРОГРАММИРОВАНИЯ ГО
Научный журнал «Вестник науки»

Режим работы с 09:00 по 23:00

zhurnal@vestnik-nauki.com

Информационное письмо

  1. Главная
  2. Архив номеров
  3. Вестник науки №1 (34) том 1
  4. Научная статья № 10

Просмотры  9 просмотров

Ненахов А.С.  


СОВРЕМЕННЫЕ МЕТОДЫ МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ГОРУТИН И ЯЗЫКА ПРОГРАММИРОВАНИЯ ГО  


Аннотация:
в данной статье рассматриваются методы многопоточного программирования в языке го и их преимущества перед потоками в других языках программирования   

Ключевые слова:
многопоточность, потоки, горутины, многопоточное программирование на языке го   


Очень часто, большие приложения состоят из множества небольших подпрограмм. Например, web-сервер принимает запросы от браузера и отправляет HTML страницы в ответ. Каждый такой запрос выполняется как отдельная небольшая программа. Такой способ идеально подходит для подобных приложений, так как обеспечивает возможность одновременного запуска множества более мелких компонентов (обработки нескольких запросов одновременно). Одновременное выполнение более чем одной задачи известно, как многопоточность. Go имеет богатую функциональность для работы с многопоточностью, в частности, такие инструменты как горутины Горутина — это функция, которая может работать параллельно с другими функциями. Для создания горутины используется ключевое слово go, за которым следует вызов функции. Горутины очень легкие, мы можем создавать их тысячами. Первое что можно сказать о горутинах – это то, что горутины не являются обычными потоками операционной системы, исполняемая среда горутин может переиспользовать один и тот же поток, эмулируя работу настоящих потоков. В результате получается быстро и дешево. Горутины очень легкие (примерно 4.5кб на горутину против нескольких мегабайт на поток). Одним из самых больших недостатков многопоточного программирования является сложность и хрупкость многих кодовых баз, которые используют потоки для достижения высокого уровня параллелизма. Go предоставляет вам примитивы, которые позволяют полностью избежать блокировки (Блокировка происходит, когда несколько процессов пытаются получить доступ к одному ресурсу одновременно). Другими словами, если двум горутинам необходимо обмениваться данными, они могут безопасно сделать это по каналу. Go выполняет всю синхронизацию за вас, и гораздо сложнее столкнуться с такими вещами, как тупиковые ситуации. Взаимоблокировка происходит, когда два (или более) потока блокируются в ожидании события, наступление которого на самом деле зависит от действий одного из заблокированных потоков. Например, если поток A ожидает изменения сигнальной переменной, устанавливаемой в потоке Б, а поток Б, в свою очередь, ждет сигнала от потока А, возникает тупиковая ситуация. Несмотря на молодость языка и временную недостаточно хорошую реализацию планировщика, производительность очень радует. Подводя итоги вот преимущества горутин перед потоками: В типичной системе вы можете запустить больше горутин, чем потоков. Горутины запускаются быстрее, чем потоки. Горутины имеют встроенные примитивы для безопасного взаимодействия между собой (каналами). Горутины мультиплексируются в небольшое количество потоков ОС, а не в сопоставлении 1: 1. Вы можете писать серверы с массовым одновременным запуском, не прибегая к последовательному программированию. Горутины управляются средой выполнения go, а не операционной системой (в разных ОС потоки могут быть реализованы по-разному) Писать программы на горутинах намного проще.

  


Полная версия статьи PDF

Номер журнала Вестник науки №1 (34) том 1   


Ссылка для цитирования:

Ненахов А.С. СОВРЕМЕННЫЕ МЕТОДЫ МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ГОРУТИН И ЯЗЫКА ПРОГРАММИРОВАНИЯ ГО // Международный научный журнал Вестник науки №1 (34) том 1. ISSN 2712-8849. С. 43 - 45. 2021 г. // Электронный ресурс: https://www.вестник-науки.рф/article/3982 (дата обращения: 18.10.2021 г.)




Нашли грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики) ?
- напишите письмо в редакцию журнала: zhurnal@vestnik-nauki.com


© 2021