I personally suggest you get data in multiple threads, but actually write to it from one thread. Most likely, it will be much easier. You can use the producer / consumer queue (which is very simple in .NET 4), and each manufacturer will feed the "index, data" pairs. Then the consumer stream could simply sequentially search, write, search, write, etc.
source
share