Como posso definir um valor mínimo em .Net sem usar um bloqueio?

Eu tenho vários threads acessando variáveis. Eu sei como escrever spinlocks e usar os métodos Threading.Interlocked para incrementar variáveis etc.

No entanto, quero executar o equivalente a:

a = Math.Min(a, b)
or
a = a | 10

... mas sem usar uma seção crítica. Isso é possível? Eu sei que a segunda linha é possível no assembler, mas não há método Interlocked.Or.

questionAnswers(2)

yourAnswerToTheQuestion