Эта доска будет управляться несколькими потоками, возможно, это поможет
с многопоточной синхронизацией?
Не вижу причин ожидать этого.
И мой вопрос: это меньше?
эффективно хранить плату в 2-мерном массиве (матрице) с
4 строки и 4 столбца?
Нет, в C не менее эффективно хранить плату в добросовестном 2D массиве. Макет в памяти неотличим от макета 1D, который вы описываете, и вычисления индексации для извлечения элементов, таким образом, полностью эквивалентны вычислениям в представленном коде.
То же самое не относится к некоторым другим языкам, таким как Java, где каждое измерение требует разыменования отдельного указателя, а массивы, как объекты, имеют дополнительные связанные данные и метаданные, помимо элементов. Подобная структура данных также может быть сформирована в C, но, хотя она может быть проиндексирована, как если бы это был многомерный массив, ее структура и структура на самом деле совершенно иные.
Хотя запрашиваемые 1D и 2D случаи логически эквивалентны, возможно, стоит отметить, что в маловероятном случае, если компилятор решил не включать встроенные вызовы linearConv()
в конкретном коде Вы представляете, что вставка этой функции сделает 1D версию немного менее эффективной, чем 2D.
Также доступ к массиву, подобному массиву [0], разыменование указателя
(т.е. * указатель), доступ к члену структуры (например, struct.member или
sutuct-> member) атомарные операции, которым не нужны критические области?
Нет, ни один из них не является атомарным в том смысле, который вы имеете в виду.