 <blockquote> <ol> <li>Do I really need to use a mutex in a thread each time I access the data from the read-only array? If so could you explain why?</li> </ol> </blockquote> <p>No. Because the data is never modified, there cannot be synchronization problem.</p> <blockquote> <ol start="2"> <li>Do I need to use a mutex in a thread when it writes to the result array even though this will be the only thread that ever writes to this element?</li> </ol> </blockquote> <p>Depends.</p> <ol> <li>If any other thread is going to read the element, you need synchronization.</li> <li>If any thread may modify the size of the vector, you need synchronization.</li> </ol> <p>In any case, take care of not writing into adjacent memory locations by different threads a lot. That could destroy the performance. See "false sharing". Considering, you probably don't have a lot of cores and therefore not a lot of threads and you say write is done only once, this is probably not going to be a significant problem though.</p> <blockquote> <ol start="3"> <li>Should I use atomic data types and will there be any significant time over head if I do?</li> </ol> </blockquote> <p>If you use locks (mutex), atomic variables are not necessary (and they do have overhead). If you need no synchronization, atomic variables are not necessary. If you need synchronization, then atomic variables can be used to avoid locks in some cases. In which cases can you use atomics instead of locks... is more complicated and beyond the scope of this question I think.</p> <p>Given the description of your situation in the comments, it seems that no synchronization is required at all and therefore no atomics nor locks.</p> <blockquote> <ol start="4"> <li>...Would my array elements in this example be aligned, or is there some way to ensure they are?</li> </ol> </blockquote> <p>As pointed out by Arvid, you can request specific alignment using the <a href="http://en.cppreference.com/w/cpp/language/alignas" rel="nofollow">alginas</a> keyword which was introduced in c++11. Pre c++11, you may resort to compiler specific extensions: <a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Variable-Attributes.html" rel="nofollow">https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Variable-Attributes.html</a></p>