Non-Blocking Concurrent Imperative Programming with Session Types
Concurrent C0 is an imperative programming language in the C family with session-typed message-passing concurrency. The previously proposed semantics implements asynchronous (non-blocking) output; we extend it here with non-blocking input. A key idea is to postpone message reception as much as possi...
Main Authors: | , , |
---|---|
Format: | Article |
Language: | English |
Published: |
Open Publishing Association
2017-01-01
|
Series: | Electronic Proceedings in Theoretical Computer Science |
Online Access: | http://arxiv.org/pdf/1701.04920v1 |
_version_ | 1818903653008801792 |
---|---|
author | Miguel Silva Mário Florido Frank Pfenning |
author_facet | Miguel Silva Mário Florido Frank Pfenning |
author_sort | Miguel Silva |
collection | DOAJ |
description | Concurrent C0 is an imperative programming language in the C family with session-typed message-passing concurrency. The previously proposed semantics implements asynchronous (non-blocking) output; we extend it here with non-blocking input. A key idea is to postpone message reception as much as possible by interpreting receive commands as a request for a message. We implemented our ideas as a translation from a blocking intermediate language to a non-blocking language. Finally, we evaluated our techniques with several benchmark programs and show the results obtained. While the abstract measure of span always decreases (or remains unchanged), only a few of the examples reap a practical benefit. |
first_indexed | 2024-12-19T20:54:57Z |
format | Article |
id | doaj.art-6018d84c27e1438bad6cfed0dac1e85b |
institution | Directory Open Access Journal |
issn | 2075-2180 |
language | English |
last_indexed | 2024-12-19T20:54:57Z |
publishDate | 2017-01-01 |
publisher | Open Publishing Association |
record_format | Article |
series | Electronic Proceedings in Theoretical Computer Science |
spelling | doaj.art-6018d84c27e1438bad6cfed0dac1e85b2022-12-21T20:06:00ZengOpen Publishing AssociationElectronic Proceedings in Theoretical Computer Science2075-21802017-01-01238Proc. LINEARITY 2016647210.4204/EPTCS.238.7:4Non-Blocking Concurrent Imperative Programming with Session TypesMiguel SilvaMário FloridoFrank PfenningConcurrent C0 is an imperative programming language in the C family with session-typed message-passing concurrency. The previously proposed semantics implements asynchronous (non-blocking) output; we extend it here with non-blocking input. A key idea is to postpone message reception as much as possible by interpreting receive commands as a request for a message. We implemented our ideas as a translation from a blocking intermediate language to a non-blocking language. Finally, we evaluated our techniques with several benchmark programs and show the results obtained. While the abstract measure of span always decreases (or remains unchanged), only a few of the examples reap a practical benefit.http://arxiv.org/pdf/1701.04920v1 |
spellingShingle | Miguel Silva Mário Florido Frank Pfenning Non-Blocking Concurrent Imperative Programming with Session Types Electronic Proceedings in Theoretical Computer Science |
title | Non-Blocking Concurrent Imperative Programming with Session Types |
title_full | Non-Blocking Concurrent Imperative Programming with Session Types |
title_fullStr | Non-Blocking Concurrent Imperative Programming with Session Types |
title_full_unstemmed | Non-Blocking Concurrent Imperative Programming with Session Types |
title_short | Non-Blocking Concurrent Imperative Programming with Session Types |
title_sort | non blocking concurrent imperative programming with session types |
url | http://arxiv.org/pdf/1701.04920v1 |
work_keys_str_mv | AT miguelsilva nonblockingconcurrentimperativeprogrammingwithsessiontypes AT marioflorido nonblockingconcurrentimperativeprogrammingwithsessiontypes AT frankpfenning nonblockingconcurrentimperativeprogrammingwithsessiontypes |