Ned
я о концепции скорее
Ned
что это такое?
Andrei
Атомарность это аттрибут операции. Когда мы говорим что переменная атомарная имеем в виду что операции над ней атомарны. Атомарность операции значит, что во время её выполнения гарантированно никто не попытается осуществить другую операцию с атомарным объектом.
Ned
тем временем я понял охерительную вещь. когда мы компилим ядро линха, все параметры конфигурации отдаются компилятору и в зависимости от них существенно меняется код.
Ned
бинго, открыл америку
Ned
Andrei
Если мы говорим про атомарность операции безотносительно объекта, то это значит что никто не прервет контекст выпоолнения этой операции и не вытеснит её с процессора.
Andrei
О
Andrei
Это легко
Andrei
Сейчас объясню элементарно
Andrei
Смотри у человека есть счет в банке.
Andrei
И вот случается так, что в какой-то момент на него хотят положить денег
Andrei
И он им же расплачивается в магазине
Andrei
Мы видим две операции
Andrei
Уменьшить(количество) и увеличить(количество)
Andrei
Как они могли бы быть реализованы?
Andrei
Например так
Andrei
withdraw(int price) { int currentBalance = getBalance(); setBalance(currentBalance - price);}
Andrei
И то же самое с функцией deposit
Andrei
Только там +
Andrei
Теперь пусть у чувака 100рублей. Он совершает покупку на 10 и ему кладут 20 рублей
Ned
а я это автору и адресовал. он недавно как раз впилен. к тебе без претензий.
Andrei
Если выполнятся эти операции одновременно то может произойти такое: магазин вызвал withdraw в пменную currentBalance записалось 100, и ровно в этот момент успевает пройти транзакция которая в банке кладет 20 рублей. На счету у чувака становится 120. Но в этот момент выполняется в орая строчка withdraw
Andrei
И его баланс становится 90
Andrei
Хотя должен быть 110 как мы понимаем.
Ned
даа
Andrei
Почему так вышло? Ну вот как раз из-за неатомарности. Одновременно мы получили доступ к объекту из двух мест.
Andrei
Чтобы такой ситуации не было, мы говорим, что операции deposit и withdraw атомарные
Andrei
А значит не могу выполняться одновременно.
Andrei
Поэтому если такая ситуация происходит они встают в очередь
Andrei
То же самое но в рамках одного компа может произойти скажем с переменными к которым обращаются из двух разных тредов.
Andrei
Или более того, одна и та же переменная к которой обращаются из двух ядер процессора
Andrei
При этом она лежит не в общем кеше.
Ned
отлично, понял
Ned
спасибо
Anatoly
Я так понимаю, гуглить и читать википедию вышло из моды.
Anatoly
вроде "откуда взялась тут эта единичка"?
Про единички: раньше часто писали
#define XXX
...
#if XXX /* instead of "#ifdef XXX" */
...
но сейчас это считается плохим стилем, и компиляторы часто ругаются ворнингами.
#define XXX 1 позволяет спокойно использовать оба варианта.
Anatoly
Также см. http://stackoverflow.com/questions/135069/ifdef-vs-if-which-is-better-safer-as-a-method-for-enabling-disabling-compila
Anatoly
И http://stackoverflow.com/questions/3802988/difference-between-preprocessor-directives-if-and-ifdef
Anatoly
^^^ также про "#ifdef XXX" vs. "#if defined (XXX)"
Anatoly
Кстати, балбесы, не понимающие разницу между иф и ифдеф, бывают даже в гугле: https://github.com/google/googletest/issues/240
🦥Alex Fails
🦥Alex Fails
Ох, сколько сообщений
ivario
Ох лол, мне скоро свой говнокод жюри показывать надо будет
🦥Alex Fails
🦥Alex Fails
ivario
🦥Alex Fails
🦥Alex Fails
ivario
Как думаешь, сколько они будут читать все 3к строк?
🦥Alex Fails
Если профессионалы, то могут пройтись взглядом и все понять
ivario
🦥Alex Fails
А, ну часик-другой тгда
🦥Alex Fails
Кстати, @ned_ogl
🦥Alex Fails
помоги плз с элементарной задачкой по терверу
🦥Alex Fails
Не то у меня мозги что-то клинят
🦥Alex Fails
"Нам надо взорвать стену. Что лучше - купить 1 бомбу, вероятность взрыва которого равна p, или две, вероятность которых p/2"?
Ned
Минуту
Ned
Ned
Одна вероятней
Ned
@AlexFails
🦥Alex Fails
спс, меня вчера упорно вводили в заблуждение, что надо складывать вероятности, а я не верил)
Sergey
Ned
Сначала разбить на элементарные исходы
Ned
Потом взять вероятности нужных
Ned
И сложить
Ned
А вероятности нужных считаются через умножение, потому что "взорвалась 1 бомба" и "взорвалась 2я бомба" независимы
Ned
И вуаля
Anatoly
На самом деле всё проще: надо подсчитать вероятность того, что ни одна бомба не рванёт. В первом случае (1-p), во втором (1-p/2)^2.
И никаких "элементарных исходов" и прочей комбинаторики. Вот было б бомб не 2, а 10 - был бы весь листок в диаграммах?
ඞ
Почаны
ඞ
Как прочитать файл, до конца fstream'ом?
ඞ
Через ifstream
Sergey
while(!EOF)
ඞ
Я делал так
ඞ
Но как -- не помню
Anonymous
не смотрел ни одного ребилда
ඞ
Это говно не работает
ඞ
Он читает файл, затем начинает выводить экран хуеты
ඞ
Бесконечно