You're not really going to know which thread is sorting through which core at any given time.
Threads tend to get doled out to cores on a first-available basis.
The OS schedules threads to cores. It tries to re-schedule a thread on the same core each quantum because the core has the context of that thread in cache. Scheduling a thread to a different core means it's likely that anything the thread tries to do with memory is a cache miss. On the other hand, if the desired core is busy (and busy for a long time) then it's probably lost a bunch of cache context for the thread and it's better to schedule it someplace else, and for better latency it's best to schedule the thread on the next available core.