{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,5]],"date-time":"2026-05-05T07:24:50Z","timestamp":1777965890063,"version":"3.51.4"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2017,3,23]],"date-time":"2017-03-23T00:00:00Z","timestamp":1490227200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Parallel Comput."],"published-print":{"date-parts":[[2017,3,23]]},"abstract":"<jats:p>\n            In this article, we consider concurrent programs in which the shared state consists of instances of linearizable abstract data types (ADTs). We present an automated approach to concurrency control that addresses a common need: the need to\n            <jats:italic>atomically<\/jats:italic>\n            execute a code fragment, which may contain multiple ADT operations on multiple ADT instances. We present a synthesis algorithm that automatically enforces atomicity of given code fragments (in a client program) by inserting pessimistic synchronization that guarantees atomicity and deadlock-freedom (without using any rollback mechanism). Our algorithm takes a\n            <jats:italic>commutativity specification<\/jats:italic>\n            as an extra input. This specification indicates for every pair of ADT operations the conditions under which the operations commute. Our algorithm enables greater parallelism by permitting commuting operations to execute concurrently. We have implemented the synthesis algorithm in a Java compiler and applied it to several Java programs. Our results show that our approach produces efficient and scalable synchronization.\n          <\/jats:p>","DOI":"10.1145\/3040223","type":"journal-article","created":{"date-parts":[[2017,3,23]],"date-time":"2017-03-23T16:19:44Z","timestamp":1490285984000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Automatic Scalable Atomicity via Semantic Locking"],"prefix":"10.1145","volume":"3","author":[{"given":"Guy","family":"Golan-Gueta","sequence":"first","affiliation":[{"name":"VMWare Research, Herzliya, Israel"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"G.","family":"Ramalingam","sequence":"additional","affiliation":[{"name":"Microsoft Research, Bangalore, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Mooly","family":"Sagiv","sequence":"additional","affiliation":[{"name":"Tel Aviv University, Tel Aviv, Israel"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Eran","family":"Yahav","sequence":"additional","affiliation":[{"name":"Technion, Haifa, Israel"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,3,23]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"ConcurrentHashMapV8. 2013. Retrieved from gee.cs.oswego.edu\/dl\/jsr166\/dist\/jsr166edocs\/jsr166e\/ConcurrentHashMapV8.html.  ConcurrentHashMapV8. 2013. Retrieved from gee.cs.oswego.edu\/dl\/jsr166\/dist\/jsr166edocs\/jsr166e\/ConcurrentHashMapV8.html."},{"key":"e_1_2_1_2_1","volume-title":"Google Core Libraries for Java","author":"Guava","year":"2016","unstructured":"Guava : Google Core Libraries for Java . 2016 . Retrieved from code.google.com\/p\/guava-libraries. Guava: Google Core Libraries for Java. 2016. Retrieved from code.google.com\/p\/guava-libraries."},{"key":"e_1_2_1_3_1","volume-title":"A Toolkit for Reliable Messaging","author":"JGroups","year":"2013","unstructured":"JGroups : A Toolkit for Reliable Messaging . 2013 . Retrieved from www.jgroups.org. JGroups: A Toolkit for Reliable Messaging. 2013. Retrieved from www.jgroups.org."},{"key":"e_1_2_1_4_1","unstructured":"TomcatConcurrentCache. 2012. Retrieved from www.devdaily.com\/java\/jwarehouse\/apache-tomcat-6.0.16\/java\/org\/apache\/el\/util\/ConcurrentCache.java.shtml.  TomcatConcurrentCache. 2012. Retrieved from www.devdaily.com\/java\/jwarehouse\/apache-tomcat-6.0.16\/java\/org\/apache\/el\/util\/ConcurrentCache.java.shtml."},{"key":"e_1_2_1_5_1","volume-title":"Watson Libraries for Analysis","author":"T. J.","year":"2016","unstructured":"WALA: T. J. Watson Libraries for Analysis . 2016 . Retrieved from http:\/\/wala.sourceforge.net. WALA: T. J. Watson Libraries for Analysis. 2016. Retrieved from http:\/\/wala.sourceforge.net."},{"key":"e_1_2_1_6_1","volume-title":"Towards Automatic Lock Removal for Scalable Synchronization","author":"Arbel Maya","unstructured":"Maya Arbel , Guy Golan-Gueta , Eshcar Hillel , and Idit Keidar . 2015. Towards Automatic Lock Removal for Scalable Synchronization . Springer , Berlin , 170--184. Maya Arbel, Guy Golan-Gueta, Eshcar Hillel, and Idit Keidar. 2015. Towards Automatic Lock Removal for Scalable Synchronization. Springer, Berlin, 170--184."},{"key":"e_1_2_1_7_1","volume-title":"Concurrency Control and Recovery in Database Systems","author":"Bernstein Philip A.","unstructured":"Philip A. Bernstein , Vassco Hadzilacos , and Nathan Goodman . 1987. Concurrency Control and Recovery in Database Systems . Addison-Wesley Longman , Boston, MA . Philip A. Bernstein, Vassco Hadzilacos, and Nathan Goodman. 1987. Concurrency Control and Recovery in Database Systems. Addison-Wesley Longman, Boston, MA."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1454456.1454466"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1379022.1375619"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1924421.1924440"},{"key":"e_1_2_1_11_1","unstructured":"Joe Duffy. 2010. A (brief) retrospective on transactional memory. Retrieved from http:\/\/joeduffyblog.com\/2010\/01\/03\/a-brief-retrospective-on-tra nsactional-memory\/.  Joe Duffy. 2010. A (brief) retrospective on transactional memory. Retrieved from http:\/\/joeduffyblog.com\/2010\/01\/03\/a-brief-retrospective-on-tra nsactional-memory\/."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190215.1190260"},{"key":"e_1_2_1_13_1","unstructured":"Keir Fraser. 2004. Practical Lock-Freedom. Ph.D. Dissertation. University of Cambridge.  Keir Fraser. 2004. Practical Lock-Freedom. Ph.D. Dissertation. University of Cambridge."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2499370.2462172"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31057-7_15"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/1855056"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2345156.2254114"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345206.1345237"},{"key":"e_1_2_1_19_1","volume-title":"Proceedings of the Conference on Principles of Distributed Systems (OPODIS).","author":"Herlihy Maurice","year":"2006","unstructured":"Maurice Herlihy , Yossi Lev , Victor Luchangco , and Nir Shavit . 2006 . A provably correct scalable concurrent skip list . In Proceedings of the Conference on Principles of Distributed Systems (OPODIS). Maurice Herlihy, Yossi Lev, Victor Luchangco, and Nir Shavit. 2006. A provably correct scalable concurrent skip list. In Proceedings of the Conference on Principles of Distributed Systems (OPODIS)."},{"key":"e_1_2_1_20_1","volume-title":"Revised Reprint","author":"Herlihy Maurice","unstructured":"Maurice Herlihy and Nir Shavit . 2012. The Art of Multiprocessor Programming , Revised Reprint . Elsevier . Maurice Herlihy and Nir Shavit. 2012. The Art of Multiprocessor Programming, Revised Reprint. Elsevier."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/78969.78972"},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the 3rd Workshop on Programmability Issues for Multi-Core Computers (MULTIPROG).","author":"Korland Guy","year":"2010","unstructured":"Guy Korland , Nir Shavit , and Pascal Felber . 2010 . Noninvasive concurrency with java STM . In Proceedings of the 3rd Workshop on Programmability Issues for Multi-Core Computers (MULTIPROG). Guy Korland, Nir Shavit, and Pascal Felber. 2010. Noninvasive concurrency with java STM. In Proceedings of the 3rd Workshop on Programmability Issues for Multi-Core Computers (MULTIPROG)."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1707801.1706304"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1273442.1250759"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/1765931.1765948"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486831"},{"key":"e_1_2_1_27_1","unstructured":"Alexander Matveev and Nir Shavit. 2012. Towards a fully pessimistic stm model. (2012).  Alexander Matveev and Nir Shavit. 2012. Towards a fully pessimistic stm model. (2012)."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1111320.1111068"},{"key":"e_1_2_1_29_1","unstructured":"Paul E. McKenney. 2017. Is parallel programming hard and if so what can you do about it?(v2017.01.02a). CoRR abs\/1701.00854. http:\/\/arxiv.org\/abs\/1701.00854.  Paul E. McKenney. 2017. Is parallel programming hard and if so what can you do about it?(v2017.01.02a). CoRR abs\/1701.00854. http:\/\/arxiv.org\/abs\/1701.00854."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2008.4636089"},{"key":"e_1_2_1_31_1","volume-title":"Principles of Program Analysis","author":"Nielson Flemming","unstructured":"Flemming Nielson , Hanne R. Nielson , and Chris Hankin . 1999. Principles of Program Analysis . Springer-Verlag , New York, NY . Flemming Nielson, Hanne R. Nielson, and Chris Hankin. 1999. Principles of Program Analysis. Springer-Verlag, New York, NY."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30579-8_14"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/989.1188"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2076021.2048073"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/24.1.83"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2813885.2737970"}],"container-title":["ACM Transactions on Parallel Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3040223","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3040223","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T03:50:38Z","timestamp":1750218638000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3040223"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,3,23]]},"references-count":36,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2017,3,23]]}},"alternative-id":["10.1145\/3040223"],"URL":"https:\/\/doi.org\/10.1145\/3040223","relation":{},"ISSN":["2329-4949","2329-4957"],"issn-type":[{"value":"2329-4949","type":"print"},{"value":"2329-4957","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,3,23]]},"assertion":[{"value":"2016-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-01-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-03-23","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}