操作系统作为 “状态机的管理者”,引入了共享的状态
def Tprint(name):
sys_write(f'{name}')
def main():
for name in 'AB':
sys_spawn(Tprint, name)
线程:共享内存的执行流
简化的线程 API (thread.h)
spawn(fn)
fn
的线程,并立即开始执行void fn(int tid) { ... }
tid
从 1 开始编号sys_spawn(fn, tid)
join()
while (done != T) sys_sched()
多处理器编程:一个 API 搞定
#include "thread.h"
void Ta() { while (1) { printf("a"); } }
void Tb() { while (1) { printf("b"); } }
int main() {
create(Ta);
create(Tb);
}
Ta
和 Tb
真的共享内存吗?
如何证明线程具有独立堆栈 (以及确定堆栈的范围)?
更多的 “好问题” 和解决
thread.h
背后:POSIX Threads想进一步配置线程?
POSIX 为我们提供了线程库 (pthreads)
man 7 pthreads