Título: | SAFE RECORD SHARING IN DYNAMIC PROGRAMMING LANGUAGES | ||||||||||||
Autor: |
ALEXANDRE RUPERT ARPINI SKYRME |
||||||||||||
Colaborador(es): |
NOEMI DE LA ROCQUE RODRIGUEZ - Orientador ROBERTO IERUSALIMSCHY - Coorientador |
||||||||||||
Catalogação: | 29/FEV/2016 | Língua(s): | ENGLISH - UNITED STATES |
||||||||||
Tipo: | TEXT | Subtipo: | THESIS | ||||||||||
Notas: |
[pt] Todos os dados constantes dos documentos são de inteira responsabilidade de seus autores. Os dados utilizados nas descrições dos documentos estão em conformidade com os sistemas da administração da PUC-Rio. [en] All data contained in the documents are the sole responsibility of the authors. The data used in the descriptions of the documents are in conformity with the systems of the administration of PUC-Rio. |
||||||||||||
Referência(s): |
[pt] https://www.maxwell.vrac.puc-rio.br/projetosEspeciais/ETDs/consultas/conteudo.php?strSecao=resultado&nrSeq=25871&idi=1 [en] https://www.maxwell.vrac.puc-rio.br/projetosEspeciais/ETDs/consultas/conteudo.php?strSecao=resultado&nrSeq=25871&idi=2 |
||||||||||||
DOI: | https://doi.org/10.17771/PUCRio.acad.25871 | ||||||||||||
Resumo: | |||||||||||||
Dynamic programming languages have become increasingly popular and
have been used to implement a range of applications. Meanwhile, multicore
processors have become the norm, even for desktop computers and
mobile devices. Therefore, programmers must turn to parallelism as a
means to improve performance. However, concurrent programming remains
difficult. Besides, despite improvements in static languages, we find dynamic
languages are still lacking in concurrency support. In this thesis, we argue
that the main problem with concurrent programming is unpredictability -
unexpected program behaviors, such as returning out-of-thin-air values. We
observe that unpredictability is most likely to happen when shared memory
is used. Consequently, we propose a concurrency communication model to
discipline shared memory in dynamic languages. The model is based on
the emerging concurrency patterns of not sharing data by default, data
immutability, and types and effects (which we turn into capabilities). It
mandates the use of shareable objects to share data. Besides, it establishes
that the only means to share a shareable object is to use message passing.
Shareable objects can be shared as read-write or read-only, which allows
both individual read-write access and parallel read-only access to data. We
implemented a prototype in Lua, called luashare, to experiment with the
model in practice, as well as to carry out a general performance evaluation.
The evaluation showed us that safe data sharing makes it easier to allow
for communication among threads. Besides, there are situations where
copying data around is simply not an option. However, enforcing control
over shareable objects has a performance cost, in particular when working
with nested objects.
|
|||||||||||||
|