-
线程=“执行线程”
- 线程允许一个程序同时做很多事
- 每一个线程就像普通非线程程序一样,都是串行执行
- 线程之间共享内存
- 每个线程都包含每个线程的状态,所以它们有
- 程序计数器,寄存器,堆栈,就绪挂起执行等状态
-
线程的好处
- I/O并发
- 客户端并行的向多个服务器发送请求并且等待响应
- 服务器端处理多个客户端请求;每个请求都可能阻塞
- 当等待从磁盘读取客户机X的数据时,处理来自客户端Y的请求
- 多核性能
- 在多个核心上并行执行代码
- 便捷性
- 在后台,每秒检查一次每个worker是否还活着
- I/O并发
-
除了线程有可替代方案吗
-
有:在单线程中编写明确交错活动的代码。通常称其为“事件驱动”
-
保存每个活动的状态表。 eg:每个客户端的请求
-
One "event" loop that: checks for new input for each activity (e.g. arrival of reply from server), does the next step for each activity, updates state.
-
事件驱动可以实现I/O并发,并且消除了线程的成本(可观),但无法获得多核的速度,并且编程很麻烦
-