Multithreaded access to a persistent linked list data structure I previously asked a question about persistent data structures here. After that I came across an article that introduced persistent data structures. I have got a question on the following figure from the same article, where it describes how to implement a persistent linked list:

   

The author says:


  Inserting a new item into a persistent singly linked list will not
  alter the existing list but create a new version with the item
  inserted into it. Instead of copying the entire list and then
  inserting the item into the copy, a better strategy is to reuse as
  much of the old list as possible.


Since the two versions (Red and Yellow + Red) have common nodes (specifically, the last three Red nodes), how can one access these two versions simultaneously, for example in a multithreaded application?
Such list is intended to be immutable - the shared nodes will never be written to. There is no problem with several threads reading from the same memory location.