Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пустой мьтех, пустой мьтех 
:(
    Опции темы
sergioK1
Дата 5.6.2016, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Код

  foo(){
}


потоков нет но если поставить sync то будут ли тормоза , многие в сети говорят да ,
но с чего , кто может подробно расписать весь механтзм работы на нижнем уровне? 
PM MAIL   Вверх
LSD
Дата 6.6.2016, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Это вообще что?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergioK1
Дата 6.6.2016, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(LSD @ 6.6.2016,  11:40)
Это вообще что?

это вообще то код жава,
и вопрос почему с мютексом будет работать медленнее,
при одном потоке, медленнее за счет чего ? 
PM MAIL   Вверх
LSD
Дата 6.6.2016, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(sergioK1 @  6.6.2016,  18:13 Найти цитируемый пост)
это вообще то код жава,

Это не код, а ерунда какая-то. Где там мьютекс? 


Цитата(sergioK1 @  6.6.2016,  18:13 Найти цитируемый пост)
при одном потоке, медленнее за счет чего ?

Захват монитора не бесплатная операция иногда сопряженная с переключение контекста (даже если он был свободен). Плюс synchronized это еще и гарантии happens before, что влечет за собой memory barrier. Но есть но: Java умеет оптимизировать блокировки, в некоторых случаях она может их вообще убрать или использовать оптимистичную блокировку.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergioK1
Дата 6.6.2016, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(LSD @ 6.6.2016,  20:16)
Цитата(sergioK1 @  6.6.2016,  18:13 Найти цитируемый пост)
это вообще то код жава,

Это не код, а ерунда какая-то. Где там мьютекс? 


Цитата(sergioK1 @  6.6.2016,  18:13 Найти цитируемый пост)
при одном потоке, медленнее за счет чего ?

Захват монитора не бесплатная операция иногда сопряженная с переключение контекста (даже если он был свободен). Плюс synchronized это еще и гарантии happens before, что влечет за собой memory barrier. Но есть но: Java умеет оптимизировать блокировки, в некоторых случаях она может их вообще убрать или использовать оптимистичную блокировку.

когда много потоков все понятно , ждем когда один поток не завершиться,
Я говорю когда  поток один что захватыать ,?  barrier между чем и чем ? 

 
Код

    for(; val<1000 *1000*100 ;val++ ){
            synchronized (val) {
                sum.add(new BigDecimal(val.toString()));
                }
            }
        }


что конкретно делаеться при synchronized(val)  обращение к ядру ? 
к некой особой памяти?
общей для всех процессоров  ? через родно для оси код естесно, или еще к чему нидь 
другому? 
PM MAIL   Вверх
LSD
Дата 7.6.2016, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Будет ли обращение к ядру для захвата мьютекса зависит от реализации. Сейчас JDK не использует мьютексы ОС, сейчас используется CAS, так что переключения контекста быть не должно (если монитор свободен). Плюс там есть Memory barrier, перед входом в synchronized и после выхода.

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergioK1
Дата 7.6.2016, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(LSD @ 7.6.2016,  11:56)
Будет ли обращение к ядру для захвата мьютекса зависит от реализации. Сейчас JDK не использует мьютексы ОС, сейчас используется CAS, так что переключения контекста быть не должно (если монитор свободен).

что за CAS  ? тогда  он должен мютескы ОС пользовать , как  же без ОС то ?

PM MAIL   Вверх
LSD
Дата 7.6.2016, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538





--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.