Concurrent algorithms and data structures