Grab and lock in sequence and sequencer

I have noticed that lock and grab are implemented under uvm_sequence_base and uvm_sequencer_base within the UVM BCL.

I have always seen a lock or a grab on a sequencer called from a sequence (virtual or standalone) like so -

this.lock(<sequencer>) - from a virtual sequence
p_sequencer.lock(this) - from a running standalone sequence

Can somebody explain the calls to the lock/grab under the sequencer? How is it different?

In reply to kernalmode1:

Please find here the details
https://verificationacademy.com/cookbook/sequences/lockgrab

In reply to chr_sue:

The page does not answer the question in any way.