  Writing concurrent programs for shared memory multiprocessor systems is a
nightmare. This hinders users to exploit the full potential of multiprocessors.
STM (Software Transactional Memory) is a promising concurrent programming
paradigm which addresses woes of programming for multiprocessor systems.
  In this paper, we implement BTO (Basic Timestamp Ordering), SGT
(Serialization Graph Testing) and MVTO(Multi-Version Time-Stamp Ordering)
concurrency control protocols and build an STM(Software Transactional Memory)
library to evaluate the performance of these protocols. The deferred write
approach is followed to implement the STM. A SET data structure is implemented
using the transactions of our STM library. And this transactional SET is used
as a test application to evaluate the STM. The performance of the protocols is
rigorously compared against the linked-list module of the Synchrobench
benchmark. Linked list module implements SET data structure using lazy-list,
lock-free list, lock-coupling list and ESTM (Elastic Software Transactional
Memory).
  Our analysis shows that for a number of threads greater than 60 and update
rate 70%, BTO takes (17% to 29%) and (6% to 24%) less CPU time per thread when
compared against lazy-list and lock-coupling list respectively. MVTO takes (13%
to 24%) and (3% to 24%) less CPU time per thread when compared against
lazy-list and lock-coupling list respectively. BTO and MVTO have similar per
thread CPU time. BTO and MVTO outperform SGT by 9% to 36%.
