Недавно я задал вопрос о использовании volatile , и мне было предложено прочитать несколько очень информативных статей от Intel и других, в которых обсуждаются барьеры памяти и их использование . Однако после прочтения этих статей я стал довольно параноиком.
У меня 64-битная машина. Безопасно ли использовать memcpy в соседнем, неперекрывающиеся области памяти из нескольких потоков? Например, скажем, у меня есть буфер:
char buff[10];
Всегда ли безопасно для одного потока использовать memcpy в первые 5 байтов, а второй поток копирует в последние 5 байтов?
Моя внутренняя реакция ( и несколько простых тестов) показывают, что это полностью безопасно, но мне не удалось найти документацию, которая могла бы меня полностью убедить. {если (p == null) возврат; } Как мне заменить это контрактом кода? Мне интересно узнать, был ли передан null и ...
В моем коде я часто делаю это:
myfunction (parameter p)
{
if(p == null)
return;
}
Как мне заменить это контрактом кода?
Мне интересно в выяснении того, был ли передан нуль и был ли он обнаружен статической проверкой.
Я заинтересован в том, чтобы генерировалось исключение контракта, если во время нашего тестирования было передано значение null
Для производства я хочу выйти из функции.
Могут ли кодовые контракты вообще это делать? Это хорошее применение для кодовых контрактов?