Demystifying Concurrent Data Structures for Multithreaded Applications