We can't help you based on so little information: but from what I read, std::Vector is thread safe
* - which probably means that it has internal locking which would seem to confirm the results you are getting. If the methods include internal locking of the whole vector, then multiple threads will just slow things down since only one of them can be active at any time.
Additionally, the number of threads created can slow the machine as well - if it exceeds the "free cores" then the thread switching overhead can make a marked difference.
I'd think about what you are processing, and see if you could separate it into smaller Vectors each of which could be locked independently and test that to see if it confirms the problem.
* Using Data Structures Safely with Threads[^]
* c++ - Is std::vector or boost::vector thread safe? - Stack Overflow[^]