Дык лучше самому атомарность обеспечить, чем распространять свои надежды на особенности конкретного компилятора. Когда прерывания временно запрещать нельзя, то я аналогично вашему варианту поступаю. Читаю из счетчика мс (ну или из другой переменной, чтение которой должно быть атомарным) последовательно в две временных переменных, значение которых сравниваю между собой.