What’s the difference between multi-threading by the same core and several tasks being run(multi-tasking) by different cores at the same time ?
Multi-Threading is where you take two different tasks and break them up and then rapidly switch between them. For example, imagine that you are eating and drinking something during a meal. You would take a bite of food, and then you would stop eating just long enough to take a drink. A computer can do this millions (or billions) of times a second so the user would never notice any loss in performance for either of these two (or more) tasks. Multi-threading enables a single core to multi-task. The operating system (OS) will tell the processor when to stop with one program and perform work on the other program. In our earlier example, your brain tells your when to stop eating and take a drink and vice versa.
There isn’t really a good answer on how it is different from the same processor breaking up multiple tasks across multiple cores. Just know that a single core which has multi-threading enabled can rapidly swap between two or more tasks, and a processor with multiple cores can just as easily use one core for one task, and another core for another task. Generally the processor has an architecture that is really good at scheduling the tasks in such a way that the processor will break the tasks up and share it across multiple cores to share the workload to complete the task as efficiently as possible. We don’t go into processor architecture in this course, so you don’t need to know that last part. Just an FYI.