# Non-Blocking Concurrent Imperative Programming with Session Types

**Authors:** Miguel Silva, M\'ario Florido, Frank Pfenning

arXiv: 1701.04920 · 2017-01-19

## TL;DR

This paper extends a session-typed concurrent programming language with non-blocking input, implementing and evaluating techniques to improve concurrency performance through postponed message reception.

## Contribution

It introduces a novel approach to non-blocking input in session-typed concurrency by postponing message reception, with an implementation and benchmark evaluation.

## Key findings

- Abstract span decreases or remains unchanged.
- Few examples show practical performance benefits.
- Implementation effectively supports non-blocking message reception.

## Abstract

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.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1701.04920/full.md

## Figures

4 figures with captions in the complete paper: https://tomesphere.com/paper/1701.04920/full.md

## References

19 references — full list in the complete paper: https://tomesphere.com/paper/1701.04920/full.md

---
Source: https://tomesphere.com/paper/1701.04920