This is real easy to do using a mailbox if you can use SystemVerilog. (supported by any version of Modelsim). Process A does a mbox.put(valid_data) when it gets valid data. Process B does a mbox.get(data) and is blocked until the other process does a put.
If you can only use Verilog, then we need to know how time is consumed by each process. How long can B take to crunch on the input before sending an output. Can valid input come faster than it takes to crunch it (i.e. do you need many concurrent B processes?