A common idiom in lock-based programming is to lock a data structure, unlink part of it, and then unlock the data structure. Doing so makes the unlinked part “private” to the thread who did the unlinking, because that part is no longer reachable to other threads.
A challenge that transactional programming introduces is that speculative threads may not know that they are destined to abort, and their transactional accesses to the unlinked part could conflict with the non transactional accesses by the unlinking thread. Create a workload where one thread’s transaction privatizes a linked list by split-ting it at some point, and another thread’s transaction is traversing the list. Describe a fault that could occur in the transactional thread.
Already registered? Login
Not Account? Sign up
Enter your email address to reset your password
Back to Login? Click here