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