Are devices connected via PCI a guarantee of data delivery at a certain speed?
No. As I understand it, PCI is a shared bus with mastering the bus , which allows one device to temporarily use the full bandwidth of the bus. In non-server environments , which typically means a throughput of 133 MB / s. When you have several I / O cards on the PCI bus, you can see how bandwidth can become scarce under load. Incorrect devices can also adversely affect latency; some controllers freeze until its drive responds to I / O, but has provided this abnormal situation.
When communicating with the device, I want my user interface to remain responsive. Is it a good idea to start communication with a device in a thread (threadpool), or is the overhead associated with it too large compared to how quick access to the PCI bus is?
When writing user-centric software, it is always useful to separate the interface from I / O or other potentially lengthy processes. For example, the modern Android SDK provides this in its HTTP client - it throws an exception if the HTTP request is executed in the user interface thread.
Depending on which version of the .NET platform you are targeting, you have several options for separating device messages from the user interface. See “Parallel Processing” and Concurrency in the .NET Framework for a high-level overview of various parameters. Threading is a low-level abstraction, and it may be easier and less error-prone to use a higher-level abstraction, such as Tasks or C #, asynchronous and pending keywords .
source share