
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

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

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

Alexander
04.07.2018
19:10:42

Dmitrii
04.07.2018
19:10:45

Alex
04.07.2018
19:11:03
Хех ?

Vladimir
04.07.2018
19:12:26
да и вообще в AtomicXXX

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

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

Alex
04.07.2018
19:14:15

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

Vladimir
04.07.2018
19:18:58

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

Alexander
04.07.2018
19:21:03
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
Спасибо
Если бы

Alex
04.07.2018
19:23:41

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

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

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
Дело у нас простое: бобы конфигурировать и дто гонять. Тут уж не до разбирательств.

Sergey
04.07.2018
19:34:21

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

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

Alexey
04.07.2018
19:39:19

Sergey
04.07.2018
19:39:55

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

Dmitrii
04.07.2018
19:41:56

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

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

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

Митко Соловец?
04.07.2018
19:51:18

Dmitrii
04.07.2018
19:52:29

Митко Соловец?
04.07.2018
19:54:31

Sergey
04.07.2018
19:55:14

Митко Соловец?
04.07.2018
19:56:05

Igor
04.07.2018
19:56:53
Плюсану к майбатису

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