Понятно, что это UB. Речь шла о том, что на практике (не)делают самые популярные компиляторы java — оракловый и gnu.
Но как уже отметил товарищ из соседней ветки, что не делают компиляторы, делает jit.
Ну, так С\С++ гораздо ближе к железу. Это их «экологическая ниша». Они созданы для того, чтобы решать проблемы, которые в более высокоабстрактных (не знаю нужного термина) отсутствуют.
1. Тут пример плохой (я ведь не статью писал). Здесь не очевидно, что в x может прилететь из другого треда. И вот тут и проблема: согласно java memory model, этого может никогда и не произойти. И компилятор имеет право так считать. А может и произойти.
2. Там же С++
Мне кажется, автор зря здесь упомянул Java. В данном контексте его утверждения просто опасны.
Да, на интеловых процессорах есть протокол когерентности кешей. Но java-приложение может работать на других процессорах. Этот протокол может быть выключен. В конце концов, есть распределенные java-машины.
Плюс, не забываем, что компилятор банально может такой код:
Integer x = 1;
while(x > 0) { тут не изменяем x };
оптимизировать до
while(true) {...}
(справедливости ради, самые известные компиляторы, насколько я знаю, так не делают)
Ну и volatile — это болше чем просто запись\чтение мимо кешей. Это happens before.
В остальном — очень интересно.
Добавлю:
1. а зачем в данном контексте потокозащищенность StringBuffer-а?
2. А сколько пользователь получит писем? Там же правило крона на раз в 10 минут настроено. Получается, в свой ДР он получит 144 письма.
Ну и еще были вопросы, пока читал, но когда дочитал — не все вспомнил.
Код продукта, над которым вы работаете — это коммерческая тайна?
А есть судебные прецеденты? Есть ссылки? Просто, кажется бредом. Таким образом можно сливать любые объемы информации. Нанял субподрядчиком аудитора конкурента(или какого-нибудь шпиона) — и все по закону. А доказать необходимость — это исключительно вопрос правильных формулировок.
Как вариант, можно вписать фразу, что-то вроде: «тут есть коммерческая тайна. Все, кто хочет получить к ней доступ должен пройти проверку в СБ заказчика»? Ну а на этом этапе сбривать всех остальных.
самое главное, что это обман самого себя.
Кроме вебки нужно еще генерить активность с клавиатуры и мышки (ну, тут, наверное, поможет контроллер с али) и картинку на рабочем столе.
Все это будет требовать регулярного внимания и позволит обмануть работодателя, я думаю, максимум процентов на 20.
Имхо, вместо этого лучше прочитать нужную книжку — и в среднесрочной перспективе повысить свою зарплату.
Ну а если и так верхняя позиция — лучше уж просто нанять людей и делать свой продукт.
Разве они устанавливают трудовые часы?
Если я не ошибаюсь, только тайм треккер + определенные часы для синхронизации команды.
Кстати, а п.3 есть в договоре? Так, ради интереса.
да, добавляют. Потому, что потоков сильно больше, чем ядер.
да, я знаю. Но в реальности в голову приходит только какая-нибудь глупость, вроде синуса от синуса от… А на практике часто оказывается, что мат. модель можно изменить, например, сделать ее ассоциативной.
Либо, если результат дискретный — можно попытаться сделать иммитацию тех же спекулятивных вычислений, вроде вычисления на других ядрах наиболее вероятных результатов вычисления предыдущей операции с последующим отбрасыванием того, что не угадал.
1. с гуи как раз все намного проще.
Там куча потоков используется просто для удобства, даже не для производительности. Отдельный поток слушает нажатия кнопок, отдельный — движения мыши. А процессор видяхи — так вообще прям создан для параллельных вычислений.
2. Наверное, не все задачи параллелятся, но вот я с ходу не смог придумать такую задачу. Все, что я встречал — это просто такая реализация. И скорее всего, ноги росли из начала 2000-х, когда даже 2-процессорные компы были редкостью.
3. А почему нет? Каждой вкладке браузера можно выдать даже не по одному потоку. Отдельно для гуи, отдельно для бизнес-логики. И это, кстати, может уменьшить латенси. А то, если честно, напрягает, когда набираешь код в idea, а на экране все появляется где-то через секунду. И у меня не дохлый комп. core i7, 16 гб. памяти, ssd.
Но как уже отметил товарищ из соседней ветки, что не делают компиляторы, делает jit.
Надо будет почитать на эту тему. Как оказалось, здесь я «плаваю».
componenthouse.com/2016/12/28/comparing-the-volatile-keyword-in-java-c-and-cpp
2. Там же С++
Да, на интеловых процессорах есть протокол когерентности кешей. Но java-приложение может работать на других процессорах. Этот протокол может быть выключен. В конце концов, есть распределенные java-машины.
Плюс, не забываем, что компилятор банально может такой код:
оптимизировать до
(справедливости ради, самые известные компиляторы, насколько я знаю, так не делают)
Ну и volatile — это болше чем просто запись\чтение мимо кешей. Это happens before.
В остальном — очень интересно.
Но не везде же мультитрединг нужен. Почему он нужен здесь?
1. а зачем в данном контексте потокозащищенность StringBuffer-а?
2. А сколько пользователь получит писем? Там же правило крона на раз в 10 минут настроено. Получается, в свой ДР он получит 144 письма.
Ну и еще были вопросы, пока читал, но когда дочитал — не все вспомнил.
А есть судебные прецеденты? Есть ссылки? Просто, кажется бредом. Таким образом можно сливать любые объемы информации. Нанял субподрядчиком аудитора конкурента(или какого-нибудь шпиона) — и все по закону. А доказать необходимость — это исключительно вопрос правильных формулировок.
Кроме вебки нужно еще генерить активность с клавиатуры и мышки (ну, тут, наверное, поможет контроллер с али) и картинку на рабочем столе.
Все это будет требовать регулярного внимания и позволит обмануть работодателя, я думаю, максимум процентов на 20.
Имхо, вместо этого лучше прочитать нужную книжку — и в среднесрочной перспективе повысить свою зарплату.
Ну а если и так верхняя позиция — лучше уж просто нанять людей и делать свой продукт.
Если я не ошибаюсь, только тайм треккер + определенные часы для синхронизации команды.
Кстати, а п.3 есть в договоре? Так, ради интереса.
да, я знаю. Но в реальности в голову приходит только какая-нибудь глупость, вроде синуса от синуса от… А на практике часто оказывается, что мат. модель можно изменить, например, сделать ее ассоциативной.
Либо, если результат дискретный — можно попытаться сделать иммитацию тех же спекулятивных вычислений, вроде вычисления на других ядрах наиболее вероятных результатов вычисления предыдущей операции с последующим отбрасыванием того, что не угадал.
Там куча потоков используется просто для удобства, даже не для производительности. Отдельный поток слушает нажатия кнопок, отдельный — движения мыши. А процессор видяхи — так вообще прям создан для параллельных вычислений.
2. Наверное, не все задачи параллелятся, но вот я с ходу не смог придумать такую задачу. Все, что я встречал — это просто такая реализация. И скорее всего, ноги росли из начала 2000-х, когда даже 2-процессорные компы были редкостью.
3. А почему нет? Каждой вкладке браузера можно выдать даже не по одному потоку. Отдельно для гуи, отдельно для бизнес-логики. И это, кстати, может уменьшить латенси. А то, если честно, напрягает, когда набираешь код в idea, а на экране все появляется где-то через секунду. И у меня не дохлый комп. core i7, 16 гб. памяти, ssd.