Confusion about “false sharing”

This is a homework problem that I have

  In a multicore system, you are running the code on the right on each core, and it suffers from false    sharing. You can assume t_id is set to a unique thread identifier (e.g. 0-15). How could you change    the code to reduce false sharing?    for (int i=0; i<N; i++)   totals[t_id] += a[i]; 

What I’m having trouble with is seeing where the false sharing is occurring. It says state t_id is set to a unique thread identifier, so doesn’t that mean there’s only 1 thread that’s accessing the data here?

We only briefly went over false sharing, but from what I’ve learned false sharing occurs when a cache miss occurs because the data was invalidated previously due to an “irrelevant” data being written/read from a different cache. But if the thread is the same, then doesn’t that mean it’s the same cache being used to write/read? How would false sharing occur here?