It's not possible for both P1 and P2 to be added to the ready queue at the same time. There must be some order in which they are added (either P1 is added before P2, or P2 is added before P1), since when you want to add a process to the ready queue, you must synchronize accesses to the ready queue in order to avoid corrupting the queue. On a single core system, you might do this by disabling interrupts while you are modifying the queue. On a multicore system, you might do this through some combination of locks and disabling interrupts, depending on the implementation of the kernel.
As an example on a single core, let's say a timer interrupt arrives that causes you to preempt P1. You disable interrupts when the timer interrupt is received. While you are adding P1 to the queue, it is not possible for P2 to become available, whether this is due to some I/O completing for P2, or the user starting up P2, etc. Interrupts have been disabled, so your kernel won't be bothered with any events regarding P2 until it has added P1 to the queue and enabled interrupts. The same is true for P2 - if you are adding P2 to the queue and a timer interrupt arrives that should cause P1 to be preempted, the timer interrupt will just be ignored until P2 has been added to the queue.