Using Program Closures to Make an Application Programming Interface (Api) Implementation Thread Safe

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

1 Citation (Scopus)


Consider a set of methods implementing an Application Programming Interface (API) of a given library or program module that is to be used in a multithreaded setting. If those methods were not originally designed to be thread safe, races and deadlocks are expected to happen. This work introduces the novel concept of program closure and describes how it can be applied in a methodology used to make the library or module implementation thread safe, by identifying the high level data races introduced by interleaving the parallel execution of methods from the API. High-level data races result from the misspecification of the scope of an atomic block, by wrongly splitting it into two or more atomic blocks sharing a data dependency. Roughly speaking, the closure of a program P, clos(P), is obtained by incrementally adding new threads to P in such a way that enables the identification of the potential high level data races that may result from running P in parallel with other programs. Our model considers the methods implementing the API of a library of program module as concurrent programs and computes and analyses their closure in order to identify high level data races. These high level data races are inspected and removed to make the interface thread safe. We illustrate the application of this methodology with a simple use case.
Original languageUnknown
Title of host publicationPADTAD 2012
Place of PublicationMinneapolis, MN, USA
PublisherACM - Association for Computing Machinery
ISBN (Print)978-1-4503-1456-5
Publication statusPublished - 1 Jan 2012
EventWorkshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging -
Duration: 1 Jan 2012 → …


ConferenceWorkshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Period1/01/12 → …

Cite this