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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

Когда нужны замки?

 

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

 

корректной работы программы требуется добавление определенного элемента сразу в несколько списков или словарей,такие операции в многопоточном приложении следует обставить замками.Вокруг атомарных операций над встроенными типами(операций,которые не вызывают исполнение какого-то другого кода наPython)замки ставить необязательно.Например,метод append()(встроенного)списка является атомарной

 

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

 

Тупиковая ситуация (deadlock)

 

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

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 55; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.)