Страницы

Поиск по вопросам

четверг, 6 февраля 2020 г.

Работа статического метода при многопоточности

#c_sharp #многопоточность


Всем привет!

Начал изучать потоки. Автор курса, который я прохожу, привел пример работы с статическими
методами при многопоточности. Он обратил внимание, что хотя статический метод обычно
существует в единственном экземпляре (так как принадлежит всему объекту), при выполнении
этого метода в двух потоках для каждого из них создается как бы копия метода; при этом
автор отмечает, что слово «копия» используется для упрощенного понимания в данном учебном
материале, после чего — цитирую:


  На самом деле происходят очень хитрые процессы — такие как с локальным хранилищем
потока с сохранением промежуточных вычислений регистров — так как НА САМОМ ДЕЛЕ СТАТИЧЕСКИЙ
МЕТОД ВСЕ РАВНО ОДИН. Но благодаря этим сложным процессам и механизмам у нас создается
иллюзия того, что статический метод копируется. ... Но нам как высокоуровневым программистам
это неинтересно.


Что это за механизмы? Как они используются для создания иллюзии копии статического
метода? И при чем тут «хранилище потока с сохранением промежуточных вычислений регистров»?
Что это за хранилище?

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

Возможно, имелся в виду стек, который системой создается для каждого потока; но и
стек это не копирование. Тогда я не знаю, что имел ввиду автор курса — он говорил,
что именно у статических методов имеются какие-то механизмы, которые и создают иллюзию
их копирования.

Если автор всё же ошибался, порошу дать определение понятий из цитаты и разъяснить,
что же хотел сказать автор. Заранее спасибо!
    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий