CS 3060: Programming Languages

Lua

Robert C. Green II, Ph.D.

Day 3

Indiana Jones

Coroutines

  • Lightweight pseduo-thread
  • Runs only on a single core
  • Asymmetric

Coroutines

                        
myVar = coroutine.create(myFunction)
succeeded, value = coroutine.resume(myFunction)

print(coroutine.status(myVar))
                        
                    
                        
myVar = coroutine.wrap(myFunction)

print(coroutine.status(myVar))
                        
                    

Coroutines

coroutines.lua
coroutines2.lua

Coroutines

  • Suspended
  • Running
  • Dead

Coroutines

  • Extra arguments to resume are passed into function called
  • Resume returns anything passed to yield
  • Yield returns

Assignment

Continue the Assignment

Read Day 2

Resources

  • http://www.lua.org