Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Понятие потоков и процессовВизуальная среда программирования Delphi предоставляет прекрасные возможности для разработки приложений, и использует при этом все возможности операционной системы. Одна из важных возможностей, которую поддерживает среда разработки Delphi – это создание приложений состоящих более чем из одного потока. Потоки позволяют в рамках одной программы решать несколько различных задач одновременно. Потоки — это объекты, получающие процессорное время. Время процессора выделяется специальными порциями, называемыми квантами. Квант называется интервал времени, имеющийся в распоряжении потока до тех пор, пока время не будет передано в распоряжение другого потока. Кванты выделяются не программам и процессам, а порожденным этими процессами потокам. Каждый процесс состоит минимум из одного потока. Сегодня все современные операционные системы позволяют запустить в рамках одного процесса несколько различных потоков. Преимущество использования потоков следующие. 1. Разделение большой задачи на несколько подзадач, что повышает переносимость кода программы и возможности его многократного использования. 2. Дополнительные возможности управления приложением за счет управления приоритетами потоков. 3. Возможность снять проблему возрастания "нагрузки" на приложение, увеличением количества потоков. Ассиметричные потоки – решающие различные задачи и не разделяющие совместные ресурсы. Необходимость в асимметричных потоках возникает в следующих случаях: - когда в программе необходимы длительные вычисления, при этом сохраняя нормальную реакцию на ввод; - при необходимости обработки асинхронного ввода/вывода с использованием различных устройств; - если необходимо создать несколько окон и одновременно обрабатывать ввод в них данных. Существует две проблемы, с которыми можно столкнуться при работе с потоками, — это тупики и гонки. Тупики имеют место, когда один поток ожидает ресурс, который в данный момент принадлежит другому потоку. Например, поток 1 захватывает ресурс A, и для продолжения работы, ждет возможности захватить ресурс B. В то же время второй поток - Поток 2 захватывает ресурс B и ждет возможности захватить ресурс A. В результате этого сценария заблокируются оба потока; ни один из них не будет исполняться. Такими ресурсами могут выступать любые совместно используемые объекты системы — файлы, область памяти, внешние устройства. Гонки возникают в ситуации, когда два или более потока пытаются получить доступ к общему ресурсу и изменить его состояние. Пусть Поток 1 получил доступ к ресурсу и изменил его в соответствии со своими интересами; затем активизировался второй поток Поток 2 и обратился к этому же ресурсу до завершения Потока 1. Поток 1 полагает, что ресурс остался в том же состоянии, в каком был до переключения. В зависимости от того, когда именно был изменен ресурс, результаты могут меняться — иногда программа будет выполняться нормально, иногда нет. Для разрешения ситуаций гонок и тупиков можно использовать некоторые приемы.
|