skip to main content
research-article
Free Access

You Don’t Know Jack about Shared Variables or Memory Models: Data races are evil.

Published:28 December 2011Publication History
Skip Abstract Section

Abstract

A Google search for "Threads are evil" generates 18,000 hits, but threads are ubiquitous. Almost all of the processes running on a modern Windows PC use them. Software threads are typically how programmers get machines with multiple cores to work together to solve problems faster. And often they are what allow user interfaces to remain responsive while the application performs a background calculation.

References

  1. Adve, S. V., Boehm, H.-J. 2010. Memory models: a case for rethinking parallel languages and hardware. Communications of the ACM 53(8): 90-101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Adve, S. V., Gharachorloo, K. 1996. Shared memory consistency models: a tutorial. IEEE Computer 29(12): 66-76. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bocchinoetal, R. 2009. A type and effect system for deterministic parallel Java. In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages, and Applications. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Boehm, H.-J. 2011. How to miscompile programs with "benig" data races. In HotPar (Hot Topics in Parallelism). Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Elmas, T., Qadeer, S., Tasiran, S. 2007. Goldilocks: a race and transaction-aware Java runtime. In Proceedings of the ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation: 245-255. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Flanagan, C., Freund, S. 2009. FastTrack: efficient and precise dynamic race detection. In Proceedings of the Conference on Programming Language Design and Implementation. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Lucia, B., Ceze, L., Strauss, K., Qadeer, S., Boehm, H.-J. 2010. Conflict exceptions: providing simple concurrent language semantics with precise hardware exceptions. In Proceedings of the International Symposium on Computer Architecture. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Sevcik, J., Aspinall, D. 2008. On validity of program transformations in the Java memory model. In European Conference on Object-oriented Programming: 27-51. Google ScholarGoogle ScholarDigital LibraryDigital Library

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in

Full Access

  • Published in

    cover image Queue
    Queue  Volume 9, Issue 12
    Log Analysis
    December 2011
    34 pages
    ISSN:1542-7730
    EISSN:1542-7749
    DOI:10.1145/2076796
    Issue’s Table of Contents

    Copyright © 2011 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 28 December 2011

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Popular
    • Editor picked

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format .

View HTML Format