In reply to tsb_matumoto:
The reason you do not see many examples using named events is because they are very difficult for most people to understand without deep knowledge of SystemVerilog scheduling semantics.
The problem with this code is if you trigger ev_001, the first $display executes and then later in the same time step you trigger ev_002, then the first $display executes a second time. You would need to make sure that double execution would not be a problem.