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...

Full description

Bibliographic Details
Main Authors: Miguel Silva, Mário Florido, Frank Pfenning
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