Yes. Not only does Peterson's Solution work with preemptive scheduling, but it was designed for that very case. In fact, when scheduling is non-preemptive, there is a possibility it might fail. For example, in a case where 'turn' is initially 0, but process 1 runs first, it will loop perpetually, and never release the CPU.