性能问题 (1)
性能问题 (2)
同一份计算任务,时间 (CPU cycles) 和空间 (mapped memory) 会随处理器数量的增长而变化。
用自旋锁实现 sum++ 的性能问题
使用场景:
作业那么多,与其干等 Online Judge 发布,不如把自己 (CPU) 让给其他作业 (线程) 执行?
“让” 不是 C 语言代码可以做到的 (C 代码只能执行指令)
syscall(SYSCALL_lock, &lk);
lk
,但如果失败,就切换到其他线程syscall(SYSCALL_unlock, &lk);
lk
,如果有等待锁的线程就唤醒操作系统 = 更衣室管理员
*lk = 🔒
,系统调用直接返回*lk = ✅
自旋锁 (线程直接共享 locked)
互斥锁 (通过系统调用访问 locked)