From this question we know that both thread and process are treated as same schedule units in kernel and have little difference in scheduling scheme. However, I'm curious about the general cost of switching between threads and processes.
For example, when switching between 2 different processes, the kernel need to change the PTBR (in x86 is the CR3 Register) to switch process page table, causing the TLB to be re-flushed. But switching between different threads of same process seem to be free from such extra cost, since such threads should share the same virtual address space.