并发 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⽇日星期⽇日
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⽇日星期⽇日
线程的⽣生命周期 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⽇日星期⽇日
互斥锁 Mutex 使⽤用锁保护数据 + 内存屏障 (Protected Data with Mutexes + Memory barriers) thread A Data Data Data thread B thread C Mutex Mutex Mutex 性能差 13年10月13⽇日星期⽇日