@jvmchat

Страница 2625 из 2890
Vladimir
04.07.2018
19:02:42
иначе изменения могут не примениться

Dmitrii
04.07.2018
19:06:24
нет, это неблокирующая операция
Я думаю, что тут вопрос был в мемори ордеринге...

Alexander
04.07.2018
19:06:37


Artem
04.07.2018
19:07:22
обновляй в цикле, пока cas не вернет true
Извините но не понял зачем цикл , в таком случае 1 поток может зависнуть после того как первый поменял значение ссылки

Google
Dmitrii
04.07.2018
19:07:34
Опять же, на интелах CAS опирается на кэш кохеренс, а такие транзакции сериализуются.

Alex
04.07.2018
19:07:48
Alexander
04.07.2018
19:07:51
потому что первый поток сделает эту операцию, а второй поток скорее всего не сможет ее сделать и пойдет себе такой дальше

Alex
04.07.2018
19:07:53
Спинлок с касом

Alexander
04.07.2018
19:08:02
затем и цикол

Dmitrii
04.07.2018
19:08:05
Т.е. да, один из потокок заметит то, что поменял другой

Alexander
04.07.2018
19:08:11
прочитать актуальное значение и попытаться записать новое

и делать это до того момента как получиться

все что там на уровне ниже не надо человеку впаривать как там кэш кохиренси работает и что там у интела сериализуется

это только собьет его с толку

Dmitrii
04.07.2018
19:09:13
В двух словах, то для CAS потоку нужна линия в Exclusive стейте

Alexander
04.07.2018
19:09:32
ответ на его вопрос - нет не гарантируется, дальше уточняющий вопрос - а какая цель использования каса

Artem
04.07.2018
19:09:46
Чувствую себя таким тупым...

Google
Alex
04.07.2018
19:09:47
Vladimir
04.07.2018
19:09:56
Извините но не понял зачем цикл , в таком случае 1 поток может зависнуть после того как первый поменял значение ссылки
почему он зависнет? сравнит значение, над которым производились изменения, с актуальным, если не изменилось - запишет, если изменилось - пойдет на следующий круг

Alex
04.07.2018
19:10:04
Только чур не спеку, а какую-то удобоваримую статью

Спеку я читал

жвмс сказкой на ночь показалось напротив спеки интела по х86

Dmitrii
04.07.2018
19:10:45
Мне лучше впартьсе про сериализацию у интела, интересно почитать
Интел не публикует детали сериализации и они разные на разных цпу. Единственное что можно это Software Developer's manual, memory ordering

Alex
04.07.2018
19:11:03
Хех ?

Vladimir
04.07.2018
19:12:26
Чувствую себя таким тупым...
для "тупых" в дж8 сделали AtomicReference.updateAndGet, с которым отпадает необходимость явно делать кас

да и вообще в AtomicXXX

Dmitrii
04.07.2018
19:13:17
Хех ?
Где-то видел на пальцах объяснение работы инструкций с префиксом lock. Сейчас попробую найти.

Artem
04.07.2018
19:13:57
Я код написал используя syncronize а босс сказал что синхронизация это долго и т.п. и нужно использовать Atomic . Задача такая : нужно проинитить значение переменной если оно равно null . Я подумал ну это же как классический сингл тон и решил написать используя блок синхронизации .

Alexander
04.07.2018
19:16:28
а чем проинитить нужно?

AtomicReference.compareAndSet(null, new Someshit()); впринципе норм тут сработает

но есть одно но

Artem
04.07.2018
19:17:32
а чем проинитить нужно?
Готовым значение типа константа в этом случае

Alexander
04.07.2018
19:17:38
ну тогда еще норм

а почему это просто без каса проинитить нельзя?

если это константа

Google
Artem
04.07.2018
19:19:14
Я думал что другой поток может не увидеть изменение просто потом на значение перегной завязана логика

Alexander
04.07.2018
19:21:03
типо этого? if (reference.get() == null) reference.compareAndSet(null, значение);
слишком старо, сейчас можно сделать так

AtomicReference<String> ref = new AtomicReference<>(null); String atata = ref.updateAndGet(current -> { if (current == null) return new String("atata"); return current; });

но в целом тут внутри цикол

Vladimir
04.07.2018
19:21:29
а, ну да

Alexander
04.07.2018
19:21:29
но цикол тебе не нужен, т.к. тут кто первый - того и тапки

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

и это иногда в разы медленне и затратнее по ресурсам нежели синхронизация

Dmitrii
04.07.2018
19:22:09
Спасибо, я очень хочу ознакомиться ?
К сожалению не нашёл оригинальной статьи которую сам читал. Есть довольно популярный блог про конкаренси, в частности вот эта статья http://preshing.com/20120515/memory-reordering-caught-in-the-act/ (не так сухо как Интел мануал, но тем не менее потребует некоторых усилий чтобы в ней разобраться)

Alexander
04.07.2018
19:22:11
но боссу веднее, че

Artem
04.07.2018
19:22:54
:D

Dmitrii
04.07.2018
19:23:04
Посмотрите часть про барьеры и там дальше ссылка на мемори семантику lock инструкций

Alexey
04.07.2018
19:23:12
Босс не Шипилев?

Artem
04.07.2018
19:23:19
Спасибо

Если бы

Artem
04.07.2018
19:23:41
Ещё поразбираюсь

Alexander
04.07.2018
19:23:49
Босс не Шипилев?
человек инициализиует что-то константой и босс заставляет его делать при помощи атомиков... м... сомневаюсь

Google
Alexey
04.07.2018
19:23:55
В реальной жизни synchronized за глаза и за уши обычно

Alex
04.07.2018
19:24:45
Скажи это моему хайлоаду с бигдатой

Alexey
04.07.2018
19:25:11
а вот за updateAndGet спасибо, от души

Если не в гридгейне работаешь то все вот эти хитожопые локи, park unpark обычно на собесах только нужны

Alexander
04.07.2018
19:26:34
говорят и в гридгейне не нужны

Alexey
04.07.2018
19:27:31
У нас кореш туда пошел, говорит первые несколько месяцев башня просто плавилась

Dmitrii
04.07.2018
19:28:02
Если не в гридгейне работаешь то все вот эти хитожопые локи, park unpark обычно на собесах только нужны
Park/unpark вообще штука очень не безопасная и чревата не очевидными багами.

Alexey
04.07.2018
19:28:21
Присылают в тикетах треддампы с кластера а ты сидишь разгребай дедлоки

Park/unpark вообще штука очень не безопасная и чревата не очевидными багами.
Спорить не буду, я на ней только шагающего робота писал

Dmitrii
04.07.2018
19:29:08
Из моего опыта код с LockSupport::park разломало добавление логирования.

Admin
ERROR: S client not available

Alexey
04.07.2018
19:32:19
эх, была бы нужда в таком на работе, самый кайф разобраться но обычно все гораздо прозаичнее

Tolegen
04.07.2018
19:33:27
Дело у нас простое: бобы конфигурировать и дто гонять. Тут уж не до разбирательств.

Alexey
04.07.2018
19:34:35
ну еще новые методы через jdbcTemplate добавлять, потому что зассали spring data заюзать

Sergey
04.07.2018
19:34:59
Я видел как впилили хибернейт в проект новый, а потом все писали через jdbcTemplate и натив квери, потому что нужны были только аналитические запросы а не круд

Вот это был анекдот

Alexey
04.07.2018
19:36:27
jdbcTemplate как хороший знакомый, с ним не прогадаешь

Tolegen
04.07.2018
19:36:51
Чем плох jdbc?

Google
Sergey
04.07.2018
19:37:01
Тем что он не спрингдата

Alexey
04.07.2018
19:37:27
а namedJdbcTemplate еще лучше, как хорошая знакомая

Чем плох jdbc?
круды на data реально проще писать, но только если они совсем каноничные круды

Tolegen
04.07.2018
19:38:52
круды на data реально проще писать, но только если они совсем каноничные круды
Ага. Под MVP годится. Но люди почему-то тащат в нормальные проекты...

Sergey
04.07.2018
19:38:58
На самом деле, есть мнение, что хибер это только для write-only

А все что читать из базы - лучше нативочкой родной

Alexey
04.07.2018
19:39:19
Sergey
04.07.2018
19:39:55
Ага. Под MVP годится. Но люди почему-то тащат в нормальные проекты...
Да ладно, вот буквально месяц назад сдал проект, там все на дате, нормально взлетело. Аналитика только на нативе

Alexey
04.07.2018
19:40:54
ее через jdbcTemplate пришлось или что посовременнее? жуки там всякие

Dmitrii
04.07.2018
19:41:56
А все что читать из базы - лучше нативочкой родной
Согласен, по крайней мере при работе с ораклом выкашивание родного jdbc дал неплохой перформанс буст

Sergey
04.07.2018
19:42:45
Сейчас вообще на майбатисе весь проект. Полет нормальный

Alexey
04.07.2018
19:44:08
во, про него тоже люди хорошо отзываются

Alexander
04.07.2018
19:46:07
а там так же надо все при помощи xml писать?

Dmitrii
04.07.2018
19:52:29
а на что заменили?
У оракла есть с-подобный proc.

Митко Соловец?
04.07.2018
19:54:31
У оракла есть с-подобный proc.
какой-то аналог jdbc?

Sergey
04.07.2018
19:55:14
а там так же надо все при помощи xml писать?
Не обязательно, в аннотациях на подобии jdbi

а там так же надо все при помощи xml писать?
Но после хиберовского лейзи лоадинга мне этот хмл как манна небесная

Митко Соловец?
04.07.2018
19:56:05
Igor
04.07.2018
19:56:53
Плюсану к майбатису

Dmitrii
04.07.2018
19:57:14
какой-то аналог jdbc?
Не совсем. Эта с-подобный язык, точнее... Оракловый препроцессор из него делает С код (ЕМНИП)

Страница 2625 из 2890