Минимальный размер INT переменной для атомарных операций R/W, многопоточность
От: neokoder  
Дата: 08.12.14 13:18
Оценка:
Привет.
Хотелось бы уточнить такой вопрос. Какой минимальный размер INT переменной(1,2,4,8 байт) которую можно использовать как флаг или параметр при многопоточном программировании с условием что чтение и запись в эту переменную на уровне машинных инструкций будут происходит атомарно, т.е. за одну машиннную инструкцию? Независимо от архитектуры — 32bit или 64bit.

Я не спец в ассемблере, но насколько я знаю 1 байт, т.е. тип char можно точно считать таковым, потому что и запись и чтение одного байта в памяти точно происходит за одну машинную инструкцию. Не уверен точно на счет 2-х и 4-х байтовой, но скорее всего также, т.е. скажем двинуть 4-х байтовое значение в память или считать также можно за одну машинную инструкцию, не важно при этом что предварительно адрес памяти должен быть занесен в регистр и может значение также. А вот с 8-ю байтами наверняка есть варианты, для 32-битных компов точно. Поэтому собственно вопрос в итоге такой: 1 или 2 или 4 байт (чтобы не зависеть от архитектуры процессора)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.