In all the systems I came across, it is not a functional problem when different streams are written to different elements of the same array. On some systems, this may be a performance issue due to threads on different cores that access data in the same cache line. HW will solve the functional part, but performance may be poor.
A functional problem does not start until you want one thread to read data written by another thread. At that time, you will need a mechanism (e.g. mutexes, semaphore, atomic operations, etc.) to ensure that the recorded data will be visible to all other streams.
source share