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.