Статья:

Многопоточные приложения

Конференция: VII Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»

Секция: Технические науки

Выходные данные
Шматова А.П. Многопоточные приложения // Технические и математические науки. Студенческий научный форум: электр. сб. ст. по мат. VII междунар. студ. науч.-практ. конф. № 7(7). URL: https://nauchforum.ru/archive/SNF_tech/7(7).pdf (дата обращения: 25.02.2020)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

Многопоточные приложения

Шматова Анастасия Павловна
студент, Поволжский государственный университет телекоммуникаций и информатики, РФ, г. Самара
Чернова Светлана Владимировна
научный руководитель, Поволжский государственный университет телекоммуникаций и информатики РФ, г. Самара

 

Многопоточность – функция, которая заключается в том, что одно ядро процессора может одновременно обрабатывать несколько потоков данных. Когда первый поток бездействует, а второй занимается вычислением, запущенное приложение может пользоваться нужной мощью для своих же целей. В результате, торможение функционала случаются реже, а пользователь не ощущает неудобств в работе.

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

Необходимо знать особенности параллельного выполнения множества потоков. Из-за того, что они выполняются одновременно, при получение данных могут возникать проблемы. Что бы этого не произошло, должна происходить синхронизация механизма.

Поток представляет собой координируемую единицу исполняемого кода. В приложении есть один поток-слушатель, который всегда ожидает поступление задачи от пользователя. При получении задачи он сразу же отдает ее отдельному рабочему потоку, который уже сам продолжает взаимодействовать с пользователем. Поток-слушатель после того, как передал задачу немедленно возвращается к своей роли – ожидание следующей задачи от пользователя.

У любого потока имеется приоритет, указывающий на место в программе, где происходит обработка, и стек, в котором сохраняются локальные переменные потока. Стек у каждого потока выглядит по-своему, но память для программного кода разделяется среди всех потоков, которые функционируют внутри одного процесса.

При организации многозадачности на основе потоков у каждого процесса должен быть, по крайней мере, один поток, хотя их может быть и больше. Это означает, что в одной программе одновременно могут решаться две задачи и больше. Например, текст может форматироваться в редакторе текста одновременно с его выводом на печать, при условии, что оба эти действия выполняются в двух отдельных потоках [1].

Многопоточные приложения имеют ряд преимуществ:

· Улучшение реакции приложения – не нужно ждать завершение одной задачи, чтобы начать выполнять другую;

· Производительность приложения равномерно увеличивается при наличии дополнительных процессоров;

· Улучшение структуры программы – многопоточные программы легче изменять к требованиям пользователя

· Результативное использование ресурсов системы;

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

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

Есть несколько языков программирования (не только перечисленные), которые позволяют написать многопоточное приложение:

· C#

В языке C# и среде .NET Framework помогают сразу две разновидности многозадачности. Поэтому средствами C# можно создавать процессы и потоки. Очень важной оказывается помощь в C# многопоточной обработке, благодаря которой упрощается написание многопоточных программ.

· Java

Язык программирования Java вносит многопоточности важный смысл для всех приложений. Приложение, написанное на языке Java, обеспечивает удобство работы для пользователя. Соблюдая простые правила написания и проектируя систему, пользователь может избежать множества распространенных и сложных проблем в написании кода.

· Python

Многопоточность в Python, один из лучших примеров упрощенной реализации потоков. На данном языке многопоточность может значительно улучшить скорость вычисления на многопроцессорных или многоядерных системах.

Достоинство многопоточной обработки состоит в том, что она позволяет написать приложения, которые очень эффективно работают благодаря возможности не использовать время пользователя на задержку приложения, которые неизбежно возникают у большинства программ. Например, одна часть программы выполняет отправку какого-либо файла от пользователя по почте через Интернет, в это же время другая часть может считывать информацию из этого файла, а третья – выполняет буферизацию данных.

 

Список литературы:
1. Компания «Восточный ветер» обзорная статья о перспективах развития биллинговых систем. URL: http://www.amobile.ru/billing/development.htm.