Size: a a a

2020 January 11

VS

Victor Sapiens in rust_offtopic
red75prime
Не спорю. Я не знаю джаву.
В Шарпах похоже. Например long читать лучше через Interlocked если вдруг работаешь с ним без локов из разных потоков.
источник

VS

Victor Sapiens in rust_offtopic
Блин, милота то какая 😊
источник

VS

Victor Sapiens in rust_offtopic
Pavel
там много чего написано, но в целом нельзя рассуждать о джаве в рамках плюсов — у них разные модели памяти, но джава явно прописывает, что запись в конкретный примитив атомарна, примитивами так же считаются ссылки и елементы массивов, потому даже если проц не умеет писать один байт, то вм должна разобраться и порешать, чтоб запись одного байта в массив была атомарной для приложения.

Спека модели памяти в джаве хоть и сложная и достаточно большая, но всё равно намного проще, чем плюсовая и в целом можно описать достаточно кратко: все записи точно атомарны и локальны (кроме double/long, которые могут быть не атомарными, но всё равно локальны — никогда не касаются других полей/елементов), все записи, которые happens-before чтений будут видимы, является ли событие А happens-beofre Б — читайте документацию.
Про long в JAVA - у неё для 32 бит лонг не атомарный а для 64 битной системы атомарный или таки пофиг какая система?)
источник

P

Pavel in rust_offtopic
Victor Sapiens
Про long в JAVA - у неё для 32 бит лонг не атомарный а для 64 битной системы атомарный или таки пофиг какая система?)
это не важно, это спека, она говорит, что лонг и дабл, если не волятильные -- могут не быть атомарными. Могут быть, а могут не быть. ВМ разных реализаций полно
источник

VS

Victor Sapiens in rust_offtopic
Eugene
выходят же новые языки программирования, которые могут быть лучше тех уже существующих
Для меня ЯП это инструмент. Хорошие и удобные инструменты я люблю да. А вообще я просто люблю творчество. Создавать что-то, продумывать и решать.
источник

VS

Victor Sapiens in rust_offtopic
Pavel
это не важно, это спека, она говорит, что лонг и дабл, если не волятильные -- могут не быть атомарными. Могут быть, а могут не быть. ВМ разных реализаций полно
Тяжко вам там в JAVA с кучей VM без единого стандарта
источник

P

Pavel in rust_offtopic
Victor Sapiens
Тяжко вам там в JAVA с кучей VM без единого стандарта
ты нас с кем-то путаешь, у нас всего один стандарт, потому всем просто
источник

P

Pavel in rust_offtopic
Victor Sapiens
В Шарпах похоже. Например long читать лучше через Interlocked если вдруг работаешь с ним без локов из разных потоков.
если тебе вдруг надо чтоб он был атомарным 100%, то допиши volatile, или используй AtomicLong/LongAdder
источник

VS

Victor Sapiens in rust_offtopic
Pavel
ты нас с кем-то путаешь, у нас всего один стандарт, потому всем просто
Ну у нас в C# ясно и четко сказано - на 64 битной системе long и double атомарные. + есть .net Standart единый для mono, net core и .net (который собственно в этом году исчезнет и останется только .net core да mono)
источник

P

Pavel in rust_offtopic
Victor Sapiens
Ну у нас в C# ясно и четко сказано - на 64 битной системе long и double атомарные. + есть .net Standart единый для mono, net core и .net (который собственно в этом году исчезнет и останется только .net core да mono)
а на 8битной системе сколько? а на 128битной? а на 14битной?
источник

ch

central hardware in rust_offtopic
Pavel
а на 8битной системе сколько? а на 128битной? а на 14битной?
у них же там VM так что какая разница
источник

VS

Victor Sapiens in rust_offtopic
В общем у нас единый стандарт на это который обязан реализовать и там можно почитать. Это ОБЯЗАНО быть одинаковым для любого рантайма. А у вас - разные рантаймы на одном может быть а может не быть. Нет такой единой вещи как .NET Standart
источник

P

Pavel in rust_offtopic
central hardware
у них же там VM так что какая разница
ну, выше ж написано, что для разных систем -- разные стандарты
источник

VS

Victor Sapiens in rust_offtopic
Pavel
ну, выше ж написано, что для разных систем -- разные стандарты
Я про то что у вас в спеке не ясно про это написано. Типо может быть. У нас однозначно и конкретно. Если так то вот так. Я про это вот. 😊
источник

P

Pavel in rust_offtopic
Victor Sapiens
В общем у нас единый стандарт на это который обязан реализовать и там можно почитать. Это ОБЯЗАНО быть одинаковым для любого рантайма. А у вас - разные рантаймы на одном может быть а может не быть. Нет такой единой вещи как .NET Standart
ты хуйню придумал, серьёзно, выполнение джава кода соответствует спеке, независимо от того, какой у тебя процессор
источник

VS

Victor Sapiens in rust_offtopic
А так везде есть своё хорошее и своё плохое)
источник

P

Pavel in rust_offtopic
Victor Sapiens
Я про то что у вас в спеке не ясно про это написано. Типо может быть. У нас однозначно и конкретно. Если так то вот так. Я про это вот. 😊
плохо синхронизированная программа может иметь ошибки, там такое написано, да
источник

VS

Victor Sapiens in rust_offtopic
Pavel
ты хуйню придумал, серьёзно, выполнение джава кода соответствует спеке, независимо от того, какой у тебя процессор
Почему я придумал? Это ТЫ сам сказал так.
источник

B

Bogdan in rust_offtopic
Victor Sapiens
Тяжко вам там в JAVA с кучей VM без единого стандарта
Всмысле? Есть стандартная спека

Многие левые вм получили сертификат от оракла/сана что они соответствуют спеке
источник

B

Bogdan in rust_offtopic
За атомарность отвечает стандарт JMM — java memory model, и он очень строгий
источник