I wrote the following short C++ program to reproduce the false sharing effect as described by Herb Sutter:
Say, we want to perform a total amount of WORKLOAD integer op
gcc supports an aligned keyword: http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html
You probably want something like this:
int arr[PARALLEL * 16] __attribute__ ((aligned (8)));
This aligns arr
to an eight-byte boundary.
Visual Studio has a similar feature, too: http://msdn.microsoft.com/en-us/library/83ythb65.aspx