определение «атомарности» говорит о том, что транзакция должна иметь возможность быть прерванной без какого-либо прикосновения или манипулирования, возможно, одновременным выполнением действий во время ее процесса.Но значит ли это, что программа не должна запускаться одновременно, когда она должна быть атомарной?
скажем, у нас есть 2 программы в качестве примера:
example_program1:
подсчитывает int i = от 1 до 100 каждую секунду
каждое число печатается в новой строке
example_program2:
просто печатает "привет"
и родительская программа, которая включает обе эти программы и запускает их один раз, получая сигнал для запуска конкретной программы (например, через sigaction в linux) с 2 версией:
версия 1:
запускает программу (даже одновременную) в любое время после получения сигнала
, что означает, что программа2 может печатать "привет", в то время как программа1 все еще печатает числа
версия 2:
запускать только одну программу за раз
сигнал для другой программы блокируется до тех пор, пока не завершится выполнение программы
inэтот пример, может только версия 2 считается атомной или бдру?Будет ли эта программа неатомарной, только если, например, программа2 будет увеличивать i на 1 во время своего процесса?