Arbitration among slave sequences running on different sequencers

I have 4 slave sequences where the body() is comprised as shown


virtual task body()
  fork 
   process_req();
  join
 
endtask

virtual function void write(trans trns);
  trans local_trans = trans::type_id::create("ltrans",this);
  local_trans.copy(trns);
  local_trans_q.push(local_trans);
endfunction

task process_req();
  trans l2_trans;
  forever begin
  while(local_trans_q.size() > 0) begin
    l2_trans = local_trans_q.pop_front();
    local_rsp_item.req = l2_trans.req;
    ...
    send_request(local_rsp_item);
    wait_for_done();
  end
  end
endtask


Each of these 4 sequences are running in parallel on different sequencers and drive transactions on 4 identical interfaces. If I need to add a condition that if these independent interfaces receive req’s on the same clk, then the sequences need to execute in priority order of seq1,seq2,seq3,seq4. If there are no concurrent transactions each sequence can execute normally as above. What is the best implementation to establish this arbitration scheme? Currently all these sequences are started in parallel in the uvm_test in parallel using a fork.
How should I include the arbitration order within this seq body?

In reply to venkstart:

What is still opebn is the execution of the sequence items. Finally it is of minor interest how the sequences are generated. You can take influence on this by processing the singel seq_items in the driver.

In reply to chr_sue:

Hi Chr,

You mean stall the execution of the sequence_item in the low priority sequence driver till the higher priority sequence items are done? I would like to not pass the information to the drivers about the sequence items being processed in other drivers? Looking for a higher level of control so driver can blindly drive the transaction as soon as the seq item is issued, but the arbitration logic at sequence level already takes care that no 2 slave responses are issued in the same cycle.

In reply to venkstart:

If you are running your sequnces on seperate sequencers this would be the most easy solution. Note sequence items are generated without time delay. If you want to control your sequencders you have to implement synchronisation mechanisms for them. This could be solutions witth barriers or uvm_events.