#c_sharp #многопоточность
Всем привет! Начал изучать потоки. Автор курса, который я прохожу, привел пример работы с статическими методами при многопоточности. Он обратил внимание, что хотя статический метод обычно существует в единственном экземпляре (так как принадлежит всему объекту), при выполнении этого метода в двух потоках для каждого из них создается как бы копия метода; при этом автор отмечает, что слово «копия» используется для упрощенного понимания в данном учебном материале, после чего — цитирую: На самом деле происходят очень хитрые процессы — такие как с локальным хранилищем потока с сохранением промежуточных вычислений регистров — так как НА САМОМ ДЕЛЕ СТАТИЧЕСКИЙ МЕТОД ВСЕ РАВНО ОДИН. Но благодаря этим сложным процессам и механизмам у нас создается иллюзия того, что статический метод копируется. ... Но нам как высокоуровневым программистам это неинтересно. Что это за механизмы? Как они используются для создания иллюзии копии статического метода? И при чем тут «хранилище потока с сохранением промежуточных вычислений регистров»? Что это за хранилище? На другом форуме подметили, что автор имел в виду, что ни обычные методы классов, ни статические не копируются. Возможно, имелся в виду стек, который системой создается для каждого потока; но и стек это не копирование. Тогда я не знаю, что имел ввиду автор курса — он говорил, что именно у статических методов имеются какие-то механизмы, которые и создают иллюзию их копирования. Если автор всё же ошибался, порошу дать определение понятий из цитаты и разъяснить, что же хотел сказать автор. Заранее спасибо!
Ответы
Ответ 1
Думайте о методе так: метод — это инструкция по выполнению, типа кулинарного рецепта. То, что метод выполняется, означает, что поток читает инструкции и выполняет их. Понятно, что ничего не мешает двум потокам одновременно делать это.
Комментариев нет:
Отправить комментарий