@conference {padtad:2012:farchi,
	title = {Using Program Closures to Make an Application Programming Interface (Api) Implementation Thread Safe},
	booktitle = {Proceedings of the 2012 Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging},
	series = {PADTAD 2012},
	year = {2012},
	note = {<p>n/a</p>
},
	pages = {18{\textendash}24},
	publisher = {ACM},
	organization = {ACM},
	address = {Minneapolis, MN, USA},
	abstract = {<p>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.</p>
},
	keywords = {concurrency, software transactional memory, static analysis, testing, verification},
	isbn = {978-1-4503-1456-5},
	doi = {10.1145/04000802.2336810},
	url = {http://doi.acm.org/10.1145/04000802.2336810},
	attachments = {https://sites.fct.unl.pt/sites/default/files/synergy-vm/files/p18-farchi.pdf},
	author = {Farchi, Eitan and Segall, Itai and Jo{\~a}o M. Louren{\c c}o and Sousa, Diogo G.}
}
