Следующий код является многопоточным и работает для потока id = 0 и 1 одновременно.Структура структуры памяти в многопоточном коде
typedef struct
{
unsigned char pixels[4];
} FourPixels;
main()
{
FourPixels spixels[];
//copy on spixels
spixels[id] = gpixels[id];
//example : remove blue component
spixels[id].pixels[0] &= 0xFC;
spixels[id].pixels[1] &= 0xFC;
spixels[id].pixels[2] &= 0xFC;
spixels[id].pixels[3] &= 0xFC;
}
Мы видим, что идентификатор потока = 0 выбирает 4 символов, и идентификатор потока = 1 выбирает другой набор из 4 символов.
Я хочу знать в памяти, как создаются строения скрепки [0] и spixles [1], что-то вроде этого?
spixels[0] spixels[1]
pixel[0] pixel[1] pixel[2] pixel[3] pixel[0] pixel[1] pixel[2] pixel[3]
2000 2001 2002 2003 2004 2005 2006 2007
Вопрос заключается в spixel [0] и spixel [1] помещен смежно с гарантией, как показано выше?
, но они не могут видеть плеча [0] и spixel [1]. они рассматриваются одновременно. – gpuguy
@gpuguy: «Работа с одновременно» не влияет на распределение памяти (которое не показано в вашем коде выше). –
@gpuguy Да, это гарантировано. Все записи массива смежны независимо от типа массива. –