for a variable accessed at least once in a software - based transactional memory system defined critical region of a program , modifying an access to the variable that occurs outside any stm - defined critical region system by starting a hardware based transactional memory based transaction , within the hardware based transactional memory based transaction , checking if the variable is currently owned by a stm transaction , checking if the variable is currently owned by a stm transaction ; if the variable is not currently owned by a stm transaction , performing the access and then committing the hardware based transactional memory transaction ; and if the variable is currently owned by a stm transaction , performing a responsive action .