Take a look at the continuous double buffered data acquisition example that ships with LV.
You are correct that your app is stalling, waiting for the data.
The example I mentioned will acquire data by starting a continuous acquistion and periodicly checking to see how many samples are waiting in the buffer. Then only the waiting samples are read.
Try this and let us know how it works out.
Ben
PS If this works and you still want more speed, investigate "queues". But that is another story...