Suppose you're debugging an application with 2 threads, Thread A and B, and you have a breakpoint set somewhere that is reachable by A. You select A as the active thread and run until it hits that breakpoint and execution stops for all threads.
At this point, if you were to hit "Step Over" (F10), do A and B both progress by one line of code 1? Or do all threads single-step forward?
What if instead, you hit "Step Into" (F11) or "Step Out" (Shift + F11) or "Continue"? What do the inactive thread(s) do?
I ask because, sometimes, it seems like while I single-step through code in the active thread, the other (left unfrozen) threads execute one or multiple steps (or possibly however many instructions they can execute in the time it takes the active thread to run until it reaches the next LoC), which is undesirable. But this might be the intended behavior, which is why VS allows you to Freeze/Thaw threads - so that you can manage the lock-stepping yourself to have granularity in thread execution order.
1: I don't think Step Over always single steps through the next line of code. Sometimes it steps through the next assembly instruction.