Let me try to explain multicore and multithreading in conjunction with multicore-
Multicore refers to a computer or processor that has more than one logical CPU core, and that can physically execute multiple instructions at the same time.
Multithreading refers to a program that can take advantage of a multicore computer by running on more than one core at the same time.
Now coming to your problem -
We assign the affinity of the thread to a core so that that core only executes the thread the idea is reduce the thread context switching as context switch is costly.
Lets take a practical example, assume you have a network processor with 4 cores and you you reserve 1 core for the control plane (control plane does a lot of processing but speed is not a concern as load is not high) and you have three independent data thread which can be assigned to each remaining core. Since these three are high volume traffic so these core just process the data and as part of design we make sure that these three threads are completely independent so that synchronization issue does not arise (Multicore by itself does not care of synchronization).
Let me now still have some doubt.