No, you don't need multiple cores to do "true multitasking". You just need enough memory to allow each thread to run in its own stack frame, and something to do the switching.
I disagree. By "true multitasking" people mean threads are really running in parallel - or at least that is what I mean ![]()
If you have a single core switching between threads then the illusion is given that things are happening in parallel but the reality is that threads are being processed sequentially even if you are allocating a higher priority and more processor time to some threads. The Arduino can multitask (in what I think is the normal sense of the word) , but it is not "true multitasking".