Ned
я о концепции скорее
Ned
что это такое?
Andrei
Атомарность это аттрибут операции. Когда мы говорим что переменная атомарная имеем в виду что операции над ней атомарны. Атомарность операции значит, что во время её выполнения гарантированно никто не попытается осуществить другую операцию с атомарным объектом.
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
Ох, сколько сообщений
ivario
Ох лол, мне скоро свой говнокод жюри показывать надо будет
🦥Alex Fails
ivario
Выбей из своего кода все дерьмо!😄
Ну, я все матерные комменты вырезал
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
спс, меня вчера упорно вводили в заблуждение, что надо складывать вероятности, а я не верил)
Ned
Сначала разбить на элементарные исходы
Ned
Потом взять вероятности нужных
Ned
И сложить
Ned
А вероятности нужных считаются через умножение, потому что "взорвалась 1 бомба" и "взорвалась 2я бомба" независимы
Ned
И вуаля
Anatoly
На самом деле всё проще: надо подсчитать вероятность того, что ни одна бомба не рванёт. В первом случае (1-p), во втором (1-p/2)^2. И никаких "элементарных исходов" и прочей комбинаторики. Вот было б бомб не 2, а 10 - был бы весь листок в диаграммах?
Почаны
Как прочитать файл, до конца fstream'ом?
Через ifstream
Sergey
while(!EOF)
Я делал так
Но как -- не помню
Anonymous
не смотрел ни одного ребилда
while(!EOF)
Да вот и проблема
Это говно не работает
Он читает файл, затем начинает выводить экран хуеты
Бесконечно