Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby Thread

Alex
October 13, 2013

Ruby Thread

Ruby Vedio,诱人的Ruby入门篇,第15课时PPT
http://edu.51cto.com/course/course_id-418.html

Alex

October 13, 2013
Tweet

More Decks by Alex

Other Decks in Programming

Transcript

  1. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 3 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    线程 Thread CPU Process Threads data Process Threads data Process Threads data 13年10月13⽇日星期⽇日
  2. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 4 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    单核 vs 多核 CPU Single core vs Multi cores cpu 13年10月13⽇日星期⽇日
  3. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 5 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    并发 vs 并⾏行 Concurrent vs Parallelism 并发是⼀一次处理很多事情,是⼀一种解决并⾏行问题的⽅方案 并⾏行是⼀一次执⾏行很多事情,是真正的执⾏行 Concurrent is about dealing with lots of things at once, it’s about solution. Parallelism is about doing lots of things at once, it’ s about execution. thread1 thread2 thread1 thread2 wait... Run 13年10月13⽇日星期⽇日
  4. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 6 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    Ruby中的线程 Thread in Ruby Ruby1.9+ native thread/pthread ---> Ruby VM GreenThreads Native threads GIL OS Ruby1.8 Green Thread/user thread ---> 13年10月13⽇日星期⽇日
  5. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 7 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    创建⼀一个线程 Threads of create Thread.new{ ... } Thread.start{ ... } Thread.fork{ ... } 13年10月13⽇日星期⽇日
  6. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 8 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    线程的⽣生命周期 lifecycle of a thread Thread.new 准备就绪 ready Thread.join 执⾏行 Run Thread.stop 睡眠 sleep Thread.wakeup 消亡 End Run Dead Sleep Sleep/ Run 异常 Exception Nil False be killed finished Aborting runing fail 13年10月13⽇日星期⽇日
  7. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 9 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    多线程安全问题 thread safe 竞态条件 (Race condition) thread A Data thread B thread C 13年10月13⽇日星期⽇日
  8. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 10 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    多线程安全问题 thread safe 原⼦子操作 (Atomic Operator) thread A Data Data Data thread B thread C Atomic Atomic Atomic 13年10月13⽇日星期⽇日
  9. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 11 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    互斥锁 Mutex 使⽤用锁保护数据 + 内存屏障 (Protected Data with Mutexes + Memory barriers) thread A Data Data Data thread B thread C Mutex Mutex Mutex 性能差 13年10月13⽇日星期⽇日
  10. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 12 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    全局锁 GIL 全局解释器锁 (GIL/GVL/GL) Ruby VM Native threads GIL OS 13年10月13⽇日星期⽇日
  11. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 13 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    线程安全的数据结构 thread safe data structures 队列 Queue Producers Insert Insert Consumers fetch fetch Queue DATA DATA DATA 13年10月13⽇日星期⽇日
  12. edu.51cto.com 51CTO学院 为梦想增值 http://www.ruby-doc.org/ 14 @张汉东 PRIMER 15、Ruby中的线程 Attractive Ruby

    其他并发模型 others concrrent models Actor CPS Erlang语⾔言 Celluloid框架 Sidekiq Golang语⾔言 Thread Pool Puma 应⽤用server 13年10月13⽇日星期⽇日