I am trying to come up with the best data structure for use in a high throughput C++ server. The data structure will be used to store anything from a few to several million obje
Well, to be thread-safe you're going to have to lock something at some point. One key thing is to make sure that the objects in your repository can be locked separately from the repository structure itself: i.e. don't have a _next link or anything of the sort inside the data you are storing. This way read operations can lock the contents of the objects without locking the structure of the repository.
Efficient insert is easy: linked list, unsorted arrays, hashtables all work ok. Efficient deletion is harder since that involves finding the deleted thing in the repository. Howerver, for raw simplicity and speed, a linked list is a good choice. Can deletions be postponed for non-busy times and items just marked as "inactive"? Then the cost of finding/deleting is not so limiting.
You're still going to have problems with traversal though. About all you can do is to lock and take a snapshot of what needs to be traversed, then check for any changes after the snapshot is looked at. Tough problem...