Note: I am a hobbyist only, with lots of software development experience, but relatively little hardware development experience: hobby gadgets only. So take that into account when considering my opinions below!
Aside from the BeagleBones and PocketBeagles with integrated PRUs, I've found that it is much better to use a separate microcontroller
with native USB support as a slave device to provide the real-time signal handling.
Depending on the kernel used, an userspace application can suffer from latencies between 1ms (HID) to 10ms (kernels compiled with HZ=100, even under just a slight load),
worst case. Installing the userspace service daemon with a realtime priority, and using C and sensible programming techniques, including multithreading, in normal operation the latency is on the order of 0.1ms, roundtrips less than 0.2ms. Using a low-latency kernel, or one with HZ=250 to 1000, should clear any latency issues. (Assuming there is sufficient CPU power to do what you want, of course.)
I've got excellent results using Teensies, especially
Teensy LC and
Teensy 3.2 (I'm not affiliated, just a happy customer); the
forum there is quite active, including the developer of the microcontrollers. You program them in the Arduino environment, using the optimized Teensyduino extension package. (Paul Stoffregen, the Teensy developer, is quite active in Arduino development.)
Do note that with Teensy LC/3.2, one is limited to USB 1.1 speeds, i.e. 12 MBits/s, or about a million bytes per second. On the other hand, you can use an ADuM3160/4160 -based USB isolator, like the one by
Olimex or the Chinese implementations using ADuM3160/4160; the Chinese $10 ones I bought off eBay were all quite okay (the circuit being quite simple, there isn't much one can do horribly wrong). The Olimex one is nice in that if you need more than the 350 mA or so (obtained from the USB bus via isolated DC-DC converter), you can use an 8V to 15V DC power supply to supply up to 750mA (at 5V) on the device side. The supply needs to be isolated from AC ground, of course, so do check. (I believe some may have a suppression capacitor that ties the negative output to AC ground. However, in Europe, the legal ones with just two prongs should be completely isolated.) The Chinese ones may have less efficient (cheaper) isolated DC-DC converters, so do check how much you can draw from those; typically it is between 250mA and 350mA, depending on the converter used. I do believe there are some even in the sub-$10 range that can provide 350mA with less than 500mA draw from host, but I'm not an EE, and only recently acquired testing equipment that allows me to measure that, so at this point, that is just a belief, not verified fact.
To get over the 1 MiB/s limit, I've obtained a Cypress EZ-USB FX2LP devkit (theoretically able to reach the 480Mbit/s or over 40 MiB/s), but haven't had yet time to play with it to see how good it is in practice. Do note that the cheaper USB isolators won't work for this! Before I got my Analog Discovery 2, I was thinking of using this, and an Si866x-isolated ADC frontend (isolating the digital signals from the ADC, letting the entire frontend use the target ground as ground level), for high-speed differential ADC. Now I don't need to.