Concurrency Abstractions in C#

Similar documents
Concurrency Abstractions in C#

Concurrency Abstractions in C#

Polyphonic C# is an extension to the C# language Extension is aimed at providing in-language concurrency support

Implementing Joins using Extensible Pattern Matching

What should we do with this freedom?

A Deterministic Concurrent Language for Embedded Systems

A Deterministic Concurrent Language for Embedded Systems

Global shared variables. Message passing paradigm. Communication Ports. Port characteristics. Sending a message 07/11/2018

A Deterministic Concurrent Language for Embedded Systems

Embedded Systems 8. Identifying, modeling and documenting how data moves around an information system. Dataflow modeling examines

Assertions, pre/postconditions

Outline. Monitors. Barrier synchronization The sleeping barber problem Readers and Writers One-way tunnel. o Monitors in Java

CSE 153 Design of Operating Systems

Copyright 2008 CS655 System Modeling and Analysis. Korea Advanced Institute of Science and Technology

Concept of a process

CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II

Operating Systems. Operating Systems Summer 2017 Sina Meraji U of T

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far

Synchronization Principles II

Chapter 6: Process Synchronization

2/3/2018 CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II. Lecture Contents. C# basics. Methods Arrays. Dr. Amal Khalifa, Spr17

Concurrent programming: From theory to practice. Concurrent Algorithms 2015 Vasileios Trigonakis

Operational Semantics of Cool

First Name: Last: ID# 1. Hexadecimal uses the symbols 1, 2, 3, 4, 5, 6, 7 8, 9, A, B, C, D, E, F,G.

Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far.

Dept. of CSE, York Univ. 1

Enforcing Mutual Exclusion Using Monitors

Semaphores INF4140. Lecture 3. 0 Book: Andrews - ch.04 ( ) INF4140 ( ) Semaphores Lecture 3 1 / 34

CS3733: Operating Systems

CS533 Concepts of Operating Systems. Jonathan Walpole

Threads and Parallelism in Java

CS313D: ADVANCED PROGRAMMING LANGUAGE

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

CSE 120 Principles of Operating Systems Spring 2016

wait with priority An enhanced version of the wait operation accepts an optional priority argument:

Models and languages of concurrent computation

Syntax-Directed Translation. Lecture 14

Concurrency. Lecture 14: Concurrency & exceptions. Why concurrent subprograms? Processes and threads. Design Issues for Concurrency.

SCHOOL: a Small Chorded Object-Oriented Language

CHAPTER 6: PROCESS SYNCHRONIZATION

1 Lexical Considerations

CmpSci 187: Programming with Data Structures Spring 2015

Lecture 6 (cont.): Semaphores and Monitors

Chapter 13. Concurrency ISBN

Operational Semantics. One-Slide Summary. Lecture Outline

Question 1. Notes on the Exam. Today. Comp 104: Operating Systems Concepts 11/05/2015. Revision Lectures

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017

Dealing with Issues for Interprocess Communication

Actor-Based Concurrency: Implementation and Comparative Analysis With Shared Data and Locks Alex Halter Randy Shepherd

Condition Variables CS 241. Prof. Brighten Godfrey. March 16, University of Illinois

Pace University. Fundamental Concepts of CS121 1

Concurrent Programming Issues & Readers/Writers

Outline. iterator review iterator implementation the Java foreach statement testing

Parallel And Distributed Compilers

Introduction to C# Applications

CSE 153 Design of Operating Systems Fall 2018

Synchronization 1. Synchronization

Asynchronous Functions in C#

Programming Safe Agents in Blueprint. Alex Muscar University of Craiova

Concurrency. On multiprocessors, several threads can execute simultaneously, one on each processor.

C# Asynchronous Programming Model

Notes on the Exam. Question 1. Today. Comp 104:Operating Systems Concepts 11/05/2015. Revision Lectures (separate questions and answers)

Outline. Why do we write functions? Introduction to Functions. How do we write functions? Using Functions. Introduction to Functions March 21, 2006

The S-Expression Design Language (SEDL) James C. Corbett. September 1, Introduction. 2 Origins of SEDL 2. 3 The Language SEDL 2.

There are 8 total numbered pages, 6 Questions. You have 60 minutes. Budget your time carefully!

Semaphores and Monitors: High-level Synchronization Constructs

Process Synchronization

The Java Memory Model

Dataflow Languages. Languages for Embedded Systems. Prof. Stephen A. Edwards. March Columbia University

The Design Recipe Fall 2017

Concurrency User Guide

Lecture 8: Threads. Lisa (Ling) Liu

CSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs

Declarative Concurrency (CTM 4)

Comp 204: Computer Systems and Their Implementation. Lecture 25a: Revision Lectures (separate questions and answers)

Deterministic Concurrency

Language Proposal: tail

Semaphores. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Field Analysis. Last time Exploit encapsulation to improve memory system performance

Chapter 6: Synchronization. Chapter 6: Synchronization. 6.1 Background. Part Three - Process Coordination. Consumer. Producer. 6.

Structuring the Computation. Structuring the Computation

Yacc: A Syntactic Analysers Generator

Synchronization I. Jo, Heeseung

Lecture 8: September 30

Learning Outcomes. Concurrency and Synchronisation. Textbook. Concurrency Example. Inter- Thread and Process Communication. Sections & 2.

Multitasking / Multithreading system Supports multiple tasks

Multiple Inheritance. Computer object can be viewed as

Chapter 6: Process Synchronization

Operating Systems. Lecture 4 - Concurrency and Synchronization. Master of Computer Science PUF - Hồ Chí Minh 2016/2017

Concurrency. On multiprocessors, several threads can execute simultaneously, one on each processor.

Operating Systems (2INC0) 2017/18

Concurrency and Synchronisation

Concurrent Programming. CS105 Programming Languages Supplement

Haskell Introduction Lists Other Structures Data Structures. Haskell Introduction. Mark Snyder

Concurrency and Synchronisation

Compiler Theory. (Semantic Analysis and Run-Time Environments)

CSE Traditional Operating Systems deal with typical system software designed to be:

Shared Memory Programming. Parallel Programming Overview

Operating Systems ECE344

Transcription:

Concurrency Abstractions in C# 1 1

Motivation Concurrency in C# Concurrency critical factor in behavior/performance affects semantics of all other constructs advantages of language vs. library Compiler analysis/optimization Clarity of syntax asynchronous communication Occurs at various levels Requires language support 2 2

Concurrency in C# Basic Constructs Asynchronous Methods Syntax: async postevent (EventInfo data) { // method body using data calls to async method return immediately method body is scheduled for execution in another thread no return result is possible similar to sending message/event 3 3

Concurrency in C# Basic Constructs - Chords Example: public class Buffer { public string Get() & public async Put (string s) { return s; illustrates a single chord with two methods chord body is executed only when all methods in the chord have been called non-async method call implicitly blocked/queued until chord completes async method calls are queued until matched (caller not blocked) at most one non-async method per chord non-deterministic selection of method calls matched by chord chord body executes in thread of non-async caller (unless all methods in chord are async methods, in which case a new thread is created) 4 4

Executing Chords Concurrency in C# invocation queues (one per method) methods [a] [b] [c]... [a] [b] bitmaps (one per chord) [b] [c] execute [a,b] chord execute [b,c] chord 5 5

Concurrency in C# Counting via Methods class Token public Token (int initial_tokens) { for (int i=0; i<initial_tokens; i++) Release(); public int Grab (int id) & public async Release() { return id; allows clients to Grab and Release a limited number of tokens argument on Grab returned to client 6 6

Recording state via Methods public class OneCell { public OneCell() { empty(); public void Put(object o) & private async empty() { contains( o ); Concurrency in C# public object Get() & private async contains (object o) { empty(); returns o; methods empty and contains are declared private methods empty and contains carries the state of the cell 7 7

Concurrency in C# Reader-Writer Example class ReaderWriter { ReaderWriter() { idle(); public void Shared() & async idle() { s(1); public void Shared() & async s(int n) { s(n+1); public void ReleaseShared() & async s(int n) { if (n == 1) idle(); else s(n-1); public void Exclusive() & async idle() { public void ReleaseExclusive() { idle(); 8 8

Active Object (Actor): Base Class public abstract class ActiveObject { protected bool done; abstract protected void ProcessMessage(); public ActiveObject() { done = false; mainloop(); async mainloop() { while(!done) { ProcessMessage(); actor: thread per object; repeatedly processes received messages note: thread created by call to async mainloop() abstract class creates basic actor pattern Concurrency in C# 9 9

Active Object (Actor): Event Example Concurrency in C# public class StockServer : ActiveObject { private ArrayList clients = new ArrayList(); public async AddClient (Client c) & override protected void ProcessMessage() { clients.add(c); public async WireQuote (Quote q) & override protected void ProcessMessage() { foreach (Client c in clients) { c.updatequote(q); public async CloseDown() & override protect void ProcessMessage() { done = true; message reception/processing driven by ProcessMessage invocations in mainloop 10 10

Concurrency in C# Implementation Outline chord async method with argument(s) of type m async methods with no argument(s) synchronous method bitmap, one bit for each method in the chord mq: to hold message (e.g., intq for integers) voidq: a counter threadq: for blocking caller threads 11 11

Concurrency in C# Performance Benchmark Test operations/sec (thousands) polyphonic non-polyphonic ping pong 115 240 single processor bounded buffer (1 prod/1 cons) 682 115 bounded buffer (2 prod/2 cons) 423 118 ping pong 66 70 dual processor bounded buffer (1 prod/1 cons) 288 250 bounded buffer (2 prod/2 cons) 125 42 12 12

Syntactic Extension Concurrency in C# class ReaderWriter { async idle(); async s(int); ReaderWriter() { idle(); public void Shared() when idle() { s(1); when s(int n) { s(n+1); public void ReleaseShared() when s(int n) { if n==1) idle(); else s(n-1); public void Exlcusive() when idle() { public void ReleaseExclusive() { idle(); 13 13