It's gated by the same access control logic that governs ptrace yes, but it does not use ptrace directly nor indirectly. The first step of that logic is:
> If the calling thread and the target thread are in the same thread group, access is always allowed.