Каждый раз, когда ваш код получает блокировку и затем делает что-то, что у вас есть кандидат на узкое место, тем не менее, поток, который вызывает BeginAcceptSocket, не будет заблокирован и может продолжать работать, пока не произойдет событие обратного вызова. Он не будет выполнять обработчик обратного вызова до тех пор, поэтому, в вашем примере, ни одна из блокировок не произойдет, пока с ней не свяжется клиент. Он все еще может зависать в коде принятия, если то, что он делает в этот момент, требует времени или задерживается из-за проблем со связью, но по вашему примеру кода трудно определить, так ли это.