{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,1,15]],"date-time":"2023-01-15T01:11:44Z","timestamp":1673745104431},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"1","funder":[{"DOI":"10.13039\/100000143","name":"Division of Computing and Communication Foundations","doi-asserted-by":"publisher","award":["CCF-0846195 and CCF-0725350"],"id":[{"id":"10.13039\/100000143","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2013,2]]},"abstract":"Fine-grained locking is often necessary to increase concurrency. Correctly implementing fine-grained locking with today's concurrency primitives can be challenging\u2014race conditions often plague programs with sophisticated locking schemes.<\/jats:p>\n We present views, a new approach to concurrency control. Views ease the task of implementing sophisticated locking schemes and provide static checks to automatically detect many data races. A view of an object declares a partial interface, consisting of fields and methods, to the object that the view protects. A view also contains an incompatibility declaration, which lists views that may not be simultaneously held by other threads. A set of view annotations specify which code regions hold a view of an object. Our view compiler performs simple static checks that identify many data races. We pair the basic approach with an inference algorithm that can infer view incompatibility specifications for many applications.<\/jats:p>\n We have ported four benchmark applications to use views: portions of Vuze, a BitTorrent client; Mailpuccino, a graphical email client; jphonelite, a VoIP softphone implementation; and TupleSoup, a database. Our experience indicates that views are easy to use, make implementing sophisticated locking schemes simple, and can help eliminate concurrency bugs. We have evaluated the performance of a view implementation of a red-black tree and found that views can significantly improve performance over that of the lock-based implementation.<\/jats:p>","DOI":"10.1145\/2430536.2430538","type":"journal-article","created":{"date-parts":[[2013,3,5]],"date-time":"2013-03-05T20:28:36Z","timestamp":1362515316000},"page":"1-33","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Views"],"prefix":"10.1145","volume":"22","author":[{"given":"Brian","family":"Demsky","sequence":"first","affiliation":[{"name":"University of California, Irvine"}]},{"given":"Patrick","family":"Lam","sequence":"additional","affiliation":[{"name":"University of Waterloo"}]}],"member":"320","published-online":{"date-parts":[[2013,3,4]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1119479.1119480"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353197"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320387"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582440"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504287"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.v17:9"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375581.1375619"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512560"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806858"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190260"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/945445.945468"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/268946.268961"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.5555\/1299042.1299061"},{"key":"e_1_2_2_15_1","doi-asserted-by":"crossref","unstructured":"Harris T. Larus J. and Rajwar R. 2010. Transactional Memory 2 ed. Vol. 5. Morgan and Claypool Publishers. Harris T. Larus J. and Rajwar R. 2010. Transactional Memory 2 ed. Vol. 5. Morgan and Claypool Publishers.","DOI":"10.2200\/S00272ED1V01Y201006CAC011"},{"key":"e_1_2_2_16_1","volume-title":"Proceedings of the 1st ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing.","author":"Hicks M.","unstructured":"Hicks , M. , Foster , J. S. , and Pratikakis , P . 2006. Lock inference for atomic sections . In Proceedings of the 1st ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing. Hicks, M., Foster, J. S., and Pratikakis, P. 2006. Lock inference for atomic sections. In Proceedings of the 1st ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing."},{"key":"e_1_2_2_17_1","volume-title":"Proceedings of the USENIX Winter Technical Conference.","author":"Korty J. A.","year":"1989","unstructured":"Korty , J. A. 1989 . Sema: A lint-like tool for analyzing semaphore usage in a multithreaded UNIX kernel . In Proceedings of the USENIX Winter Technical Conference. Korty, J. A. 1989. Sema: A lint-like tool for analyzing semaphore usage in a multithreaded UNIX kernel. In Proceedings of the USENIX Winter Technical Conference."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993562"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1583991.1584020"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542491"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190265"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134018"},{"key":"e_1_2_2_24_1","volume-title":"Proceedings of the 12th International Conference on Compiler Construction.","author":"Nystrom N.","unstructured":"Nystrom , N. , Clarkson , M. R. , and Myers , A. C . 2003. Polyglot: An extensible compiler framework for Java . In Proceedings of the 12th International Conference on Compiler Construction. Nystrom, N., Clarkson, M. R., and Myers, A. C. 2003. Polyglot: An extensible compiler framework for Java. In Proceedings of the 12th International Conference on Compiler Construction."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1016\/1385-7258(77)90055-5"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/268998.266641"},{"key":"e_1_2_2_27_1","volume-title":"Proceedings of the USENIX Winter Technical Conference.","author":"Sterling N.","year":"1993","unstructured":"Sterling , N. 1993 . Warlock: A static data race analysis tool . In Proceedings of the USENIX Winter Technical Conference. Sterling, N. 1993. Warlock: A static data race analysis tool. In Proceedings of the USENIX Winter Technical Conference."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1693453.1693485"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1111037.1111067"},{"key":"e_1_2_2_30_1","volume-title":"Proceedings of the 24th European Conference on Object-Oriented Programming.","author":"Vaziri M.","unstructured":"Vaziri , M. , Tip , F. , Dolby , J. , Hammer , C. , and Vitek , J . 2010. A type system for data-centric synchronization . In Proceedings of the 24th European Conference on Object-Oriented Programming. Vaziri, M., Tip, F., Dolby, J., Hammer, C., and Vitek, J. 2010. A type system for data-centric synchronization. In Proceedings of the 24th European Conference on Object-Oriented Programming."},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504288"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/155332.155352"},{"key":"e_1_2_2_33_1","volume-title":"InProceedings of the International Workshop on Languages and Compilers for Parallel Computing.","author":"Zhang Y.","unstructured":"Zhang , Y. , Sreedhar , V. C. , Zhu , W. , Sarkar , V. , and Gao , G. R . 2007. Minimum lock assignment: A method for exploiting concurrency among critical sections . InProceedings of the International Workshop on Languages and Compilers for Parallel Computing. Zhang, Y., Sreedhar, V. C., Zhu, W., Sarkar, V., and Gao, G. R. 2007. Minimum lock assignment: A method for exploiting concurrency among critical sections. InProceedings of the International Workshop on Languages and Compilers for Parallel Computing."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2430536.2430538","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,30]],"date-time":"2022-12-30T08:28:22Z","timestamp":1672388902000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2430536.2430538"}},"subtitle":["Synthesizing fine-grained concurrency control"],"short-title":[],"issued":{"date-parts":[[2013,2]]},"references-count":31,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2013,2]]}},"alternative-id":["10.1145\/2430536.2430538"],"URL":"https:\/\/doi.org\/10.1145\/2430536.2430538","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,2]]},"assertion":[{"value":"2010-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2011-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-03-04","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}