Lecture-2 - CS390C: Principles of Concurrency and...

Info iconThis preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: CS390C: Principles of Concurrency and Parallelism Principles of Concurrency and Parallelism Lecture 2: Coroutines 1/12/12 1 Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Expressivity A concurrent program provides no fundamental computability advantages over a sequential program Any computation that can be expressed using a multitape Turing machine can be expressed using a single-tape Turing machine Why have it, then? Performance: parallelism Responsiveness: web servers operating systems Flexibility Algorithms, data structures, etc. Expressivity 2 Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Starting Point: Control How do we represent or capture the notion of simultaneity? Example: A generator: 3 x = 0; proc f() = { r := x; x := x + 1; return r } f(); yields 0 f(); yields 1 Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Generators Suppose instead of incrementing a counter, we returned the elements of an array A bit more complicated, but generation can still be expressed using updates on the array index 4 i := 0 proc f(a) = { if i < Array.length(a) then { r := A[i]; i := i + 1; return r } else raise ArrayOutofBoundsExn } Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Generators What happens if generation is not so apparent? Example: Generate all the elements of a tree How do we write a getNextTreeElt routine? We need to record and remember the next position in the tree for subsequent calls to the generator We want to keep things modular and abstract, and not expose how the tree is traversed to clients Want to write something like: 5 foreach node in Tree do { ... } Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Generators How do we implement foreach? It is meant to be a generator that yields the next leaf in the tree (according to some traversal policy) every time it is invoked Must preserve the state of the traversal internally How should this state be kept? 6 Thursday, January 12, 12 CS390C: Principles of Concurrency and Parallelism Iterators and Coroutines Iterators are a special case of generators Found in C++, Java, Python, Lua, etc....
View Full Document

This note was uploaded on 03/26/2012 for the course CS 390 taught by Professor Staff during the Spring '08 term at Purdue University-West Lafayette.

Page1 / 23

Lecture-2 - CS390C: Principles of Concurrency and...

This preview shows document pages 1 - 8. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online