Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2016, 19:42   #1
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
Радость Работа статического метода при многопоточности?

Всем привет, начал изучать потоки. Автор курса, который я прохожу, привел пример работы с статическими методами при многопоточности - где обратил внимание, что хоть обычно статический метод обычно один - т.к принадлежит всему объекту. Но при этом при работе с потоками при выполнении этого метода в обеих потоках, например первичном и вторичном, для каждого потока слздается как бы "копия" статического метода для каждого потока; при этом автор отмечает слово "копия" используется для упрощенного понимания в данном учебном материале, после чего. - цитирую. - " На самом деле происходят очень хитрые процессы' такие как - локальным хранелищем потока с сохранением промежуточных вычислений регистров - т.к НА САМОМ ДЕЛЕ СТАТИЧЕСКИЙ МЕТОД ВСЕ РАВНО ОДИН, но благодоря этим сложным процессам и механизмам у нас создается иллюзия того , что статический метод копируется. ... Но нам как высокоуповневым программистам это не интерестно.'"
кто может мне объяснить, что это за механизмы и как они используюются для достижения такой цели , как создание иллюзии копии статического метода, и при чем тут термины прииведенные автором : хранелищем потока с сохранением промежуточных вычислений регистров и что они ОЗНАЧАЮТ?
На другом форуме подметил, что автор возможно иммел ввиду, что Ни обычные методы классов, ни статические не копируются.
Также подметили что возможно автор имелся ввиду стек, который системой создается для каждого потока, но и стек это не копирование., Но тогда я не знаю что имел ввиду автор курса- он говорил, что именно у статичеих методов имеются какие-то механизмы, которые и создают иллюзию копирования статичеих методов.
Если автор всё же ошибался, тр порошу дать определение понятий. Приведенных в цитате и все же может этой цитатой и тем, что хотел сказать автор есть какая то взаимосвязь и цитата послужит подсказкой. Заранее спасибо!
BadCats вне форума Ответить с цитированием
Старый 13.08.2016, 19:49   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Я думаю, что говорится про https://ru.wikipedia.org/wiki/%D0%9F...81%D1%82%D0%B0 и просто не совсем удачная формулировка.
p51x вне форума Ответить с цитированием
Старый 13.08.2016, 19:59   #3
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
По умолчанию

Огромное спасибо! Обязательно посмотрю. Не могли бы Вы кратко своими словами.описаит суть статьи и вопроса в целом?
BadCats вне форума Ответить с цитированием
Старый 14.08.2016, 08:20   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

В вики итак очень кратко. Вы не осилили несколько коротких абзацев или, что скорее всего, ответ нуден не вам, а вы только "посредник"...
p51x вне форума Ответить с цитированием
Старый 14.08.2016, 11:11   #5
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
По умолчанию

Извиняюсь не хотел никого обидеть
BadCats вне форума Ответить с цитированием
Старый 14.08.2016, 11:38   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

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

Цитата:
при выполнении этого метода в обеих потоках, например первичном и вторичном, для каждого потока слздается как бы "копия" статического метода для каждого потока;
Бред полнейший. Никакие копии функций не создаются. Это как бы твой поток вызвал функцию printf и вот из-за этого создалась копия. Дурдом. А что, если я создан 100 потоков, то будет 100 копий? - а если тысячу - у меня hello world всю память сожрет?

Цитата:
На самом деле происходят очень хитрые процессы' такие как - локальным хранелищем потока с сохранением промежуточных вычислений регистров - т.к НА САМОМ ДЕЛЕ СТАТИЧЕСКИЙ МЕТОД ВСЕ РАВНО ОДИН, но благодоря этим сложным процессам и механизмам у нас создается иллюзия того , что статический метод копируется. ... Но нам как высокоуповневым программистам это не интерестно.'"
И никаких там сложных процессов тоже нету. У статического метода есть адрес. Притом код этого метода не дублируется нигде. Ну вот как бы я выше пример с функцией printf привел. Когда ты вызываешь функцию (не важно один поток у тебя или сотня) - программа переходит к ней (ближе к железу - помещает адрес функции в регистр программного счетчика, который есть у каждого потока). Ну кроме регистра PC еще аргументы функции в стек запихиваются и может быть какая-то еще информация (много от чего зависит это).

Но к многопоточному программированию это отношения вообще не имеет. Точно также однопоточная программа вызывает все тот же задрыпанный printf.

Лично мой вывод - вы читаете/смотрите какой-то говнокурс. Автор курса не шарит вообще ни разу, но зато учить лезет.
rrrFer вне форума Ответить с цитированием
Старый 14.08.2016, 13:12   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

rrrFer, зря вы так на автора наехали. Просто неудачная формулировка. Он и сам пишет, что фактической копии нет. Разговор о том, что происходит переключение потоков с сохранением контекста и "значений переменных" так, что создается иллюзия, что у каждого своя копия и они друг на друга не влияют.
p51x вне форума Ответить с цитированием
Старый 14.08.2016, 13:31   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
rrrFer, зря вы так на автора наехали. Просто неудачная формулировка.
Ну так за это надо в первую очередь наезжать.
Он мог подумать о более удачном варианте,
но не сделал этого, в результате имеем такую вот бредятину.
Собственно, точность информации и её представление
определяют является ли книга хорошей или полным УГ.
Croessmah вне форума Ответить с цитированием
Старый 14.08.2016, 14:18   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
rrrFer, зря вы так на автора наехали. Просто неудачная формулировка. Он и сам пишет, что фактической копии нет.
1) Если копии нет, то зачем перед этим говорить что она есть?
2) Зачем вообще про это говорить? - статические методы как-то по-особому работают при многопоточности? (они чем-то отличаются от обычных функций? - если нет, то зачем городить весь этот огород?)
2.1) автор говорит про какую-то иллюзию и дескать тут как-то замешаны статические методы. Ну окей, а если я просто конкатенацию двух строк сделаю в двух потоках - будет такая же иллюзия? - только я просто функцию вызвал, а не статический метод.
2.2) цитирую ТС: "что имел ввиду автор курса- он говорил, что именно у статичеих методов имеются какие-то механизмы". Нет таких механизмов, значит автор курса обманул;
3) автор курса вводит кучу терминов. Вангу проще истолковать, чем это: "хранелищем потока с сохранением промежуточных вычислений регистров"

Ну и вдобавок вот этот оборот "происходят хитрые процессы" как бы намекает, что автор курса не до конца понимает что там происходит.

Это все мое мнение. Я вообще почти не видел нормальных видеокурсов, ИМХО обычно их снимают недалекие люди, которые сами еще не разобрались.
rrrFer вне форума Ответить с цитированием
Старый 14.08.2016, 14:36   #10
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
По умолчанию

Также мне сказали, что скорее всего автор имел ввиду реентерабельность или "принцип повторной входимости" методов.
BadCats вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со специализированным оборудованием обработки статического и динамического информационного контента riko.kafto Помощь студентам 7 28.11.2015 20:32
Проблема с вызовом статического метода перегруженного класса, полученного через GetClass savva-paladin Lazarus, Free Pascal, CodeTyphon 7 16.12.2013 18:19
Достучаться до контрола из под статического метода coNsept C# (си шарп) 1 03.10.2012 09:29
Динамическая загрузка статического метода из DLL Granus Общие вопросы C/C++ 6 15.02.2012 15:47
Преобразование в строчный тип данных(Ошибка не содержит статического метода "Main", подходящего для точки входа) aly-lucenko Помощь студентам 8 02.10.2011 11:36