Why we should use non-blocking assignments in driver and blocking assignments in monitor?

Also, to be noted that we should not use non-blocking assignment on automatic variables, such as object. So what we do in a monitor is that we sample the interface value into a transaction which is automatic, so here we must use blocking assignment.

for a drive, we use non-blocking because it will eliminate the race condition by scheduling the updation of LHS in the NBA region.