úÎä3Wait-free Tree Counter.BSD36Julian Sutherland (julian.sutherland10@imperial.ac.uk)NoneEÿaA wait-free concurrent Tree Counter, a binary tree of counters, with each leaf associated with a thread. Leaves can be split, creating a new leaf for the current thread and another that can be used by another thread. Increments are wait-free as long as each thread performs them on different instance of TreeCounter split from an initial instance using !, prone to ABA problem otherwise.!TreeCounter inside the STM Monad. TreeCounter inside the IO Monad.Creates a new instance of the E data type, instanciated to the value of the input, with type in the  class.  Splits a „ instance, updating it to a new leaf and creating a new one, allowing another thread to increment the counter in a wait-free manner.Increments the k in an atomic manner as long as this thread is the only thread incrementing the counter from this instance VReads the total value of the binary tree of counters associated with this instance of .           TreeCounter-0.0.2%Data.NonBlocking.WaitFree.TreeCounter TreeCounterTreeCounterSTM TreeCounterIOnewTreeCountersplitTreeCounterincTreeCounterreadTreeCounterbaseGHC.RealIntegral CounterTreeLeafNodesumTree