What I meant by the read only those byte that are waiting, I meant that your code should loop checking how many bytes are at the port, and then read only that count in each call to the read function.
RE: Multithreading.
This warrants a study of its own.
LV can be set to run single or multi-threaded.
In single thread, the code behave as if it single sequence of steps where only one tasks is performed at a time.
In multi-threaded mode, the LC compiler will determine (based on data dependecies) what pieces of code can execute at the same time.
If your diagram has two serial port inits sitting one above the other, and they are not forced to execute( due to wires or structures) in any specific order (relative to each other) multi-threading c
an start up the init on one port and then sleep while the hardware responds. Meanwhile, the same init can be taking place on hte other port.
If single-threaded or if data dependencies exist, the first port would init, sleep waiting for hardware, then init second port sleep...
This explanation is far from complete.
I suggest a search or a formal question posted to this site will be more helpfull.
Trying to help,
Ben