原子操作和无锁编程能解决什么问题,为什么原子变量不等于线程安全?
原子操作和无锁编程能解决什么问题,为什么原子变量不等于线程安全? 本文先给出可直接复述的结论,再用最小代码说明原子操作 无锁编程的工作方式、判断依据、项目边界和常见误区。
进程与并发专题面试题第 1 页,显示第 1–44 题,共找到 44 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
原子操作和无锁编程能解决什么问题,为什么原子变量不等于线程安全? 本文先给出可直接复述的结论,再用最小代码说明原子操作 无锁编程的工作方式、判断依据、项目边界和常见误区。
Linux CFS 完全公平调度器如何用 vruntime 决定下一个运行的任务? 本文先给出可直接复述的结论,再用最小代码说明Linux CFS vruntime 调度的工作方式、判断依据、项目边界和常见误区。
条件变量为什么必须与互斥锁配合、wait 为什么要在 while 循环里? 本文先给出可直接复述的结论,再用最小代码说明条件变量 虚假唤醒 while的工作方式、判断依据、项目边界和常见误区。
为什么频繁上下文切换会降低性能,如何在压测中观测? 本文先给出可直接复述的结论,再用最小代码说明上下文切换开销 vmstat的工作方式、判断依据、项目边界和常见误区。
一次进程上下文切换具体保存和恢复哪些内容? 本文先给出可直接复述的结论,再用最小代码说明进程上下文切换 保存内容的工作方式、判断依据、项目边界和常见误区。
CPU 亲和性是什么,绑核在什么场景能提升性能? 本文先给出可直接复述的结论,再用最小代码说明CPU 亲和性 sched_setaffinity的工作方式、判断依据、项目边界和常见误区。
死锁的四个必要条件是什么,面试中如何用它推导排查思路? 本文先给出可直接复述的结论,再用最小代码说明死锁 四个必要条件的工作方式、判断依据、项目边界和常见误区。
线上进程疑似死锁,如何用 gdb、pstack 或 /proc 定位持锁线程? 本文先给出可直接复述的结论,再用最小代码说明死锁排查 gdb 线程栈的工作方式、判断依据、项目边界和常见误区。
epoll 水平触发与边缘触发的区别是什么,ET 模式为什么必须配非阻塞 fd? 本文先给出可直接复述的结论,再用最小代码说明epoll LT ET 非阻塞的工作方式、判断依据、项目边界和常见误区。
eventfd 适合什么场景,它和 pipe 做线程间通知相比好在哪? 本文先给出可直接复述的结论,再用最小代码说明eventfd 线程通知的工作方式、判断依据、项目边界和常见误区。
Unix socket 的 SCM_RIGHTS 如何实现进程间传递文件描述符? 本文先给出可直接复述的结论,再用最小代码说明SCM_RIGHTS 文件描述符传递的工作方式、判断依据、项目边界和常见误区。
fork 之后再 exec 的典型流程是什么,为什么 Unix 要拆成两步? 本文先给出可直接复述的结论,再用最小代码说明fork exec 两步创建进程的工作方式、判断依据、项目边界和常见误区。
futex 是什么,为什么说它是 Linux 用户态锁的基石? 本文先给出可直接复述的结论,再用最小代码说明futex 用户态锁的工作方式、判断依据、项目边界和常见误区。
管道、消息队列、共享内存、socket 之间如何按场景选型? 本文先给出可直接复述的结论,再用最小代码说明IPC 方式选型的工作方式、判断依据、项目边界和常见误区。
活锁和死锁的区别是什么,什么设计会引入活锁? 本文先给出可直接复述的结论,再用最小代码说明活锁 死锁 区别的工作方式、判断依据、项目边界和常见误区。
Linux load average 包含哪些状态的进程,高负载一定代表 CPU 忙吗? 本文先给出可直接复述的结论,再用最小代码说明Linux load average 含义的工作方式、判断依据、项目边界和常见误区。
固定加锁顺序为什么能预防死锁,跨模块代码如何约定顺序? 本文先给出可直接复述的结论,再用最小代码说明加锁顺序 预防死锁的工作方式、判断依据、项目边界和常见误区。
Linux 内核 lockdep 是如何在运行时检测潜在死锁的? 本文先给出可直接复述的结论,再用最小代码说明lockdep 死锁检测的工作方式、判断依据、项目边界和常见误区。
条件变量的丢失唤醒问题是怎么发生的,如何正确使用避免? 本文先给出可直接复述的结论,再用最小代码说明条件变量 丢失唤醒的工作方式、判断依据、项目边界和常见误区。
为什么多线程程序需要内存序,x86 和 ARM 上的可见性差异在哪? 本文先给出可直接复述的结论,再用最小代码说明内存序 memory ordering的工作方式、判断依据、项目边界和常见误区。
mmap 共享映射如何实现进程间通信,MAP_SHARED 与 MAP_PRIVATE 差异是什么? 本文先给出可直接复述的结论,再用最小代码说明mmap MAP_SHARED 进程通信的工作方式、判断依据、项目边界和常见误区。
pthread_mutex 在 Linux 上基于 futex 如何做到无竞争时零系统调用? 本文先给出可直接复述的结论,再用最小代码说明pthread mutex futex 实现的工作方式、判断依据、项目边界和常见误区。
互斥锁和信号量的本质区别是什么,能用二值信号量替代互斥锁吗? 本文先给出可直接复述的结论,再用最小代码说明互斥锁 信号量 区别的工作方式、判断依据、项目边界和常见误区。
nice 值如何影响 CFS 中进程实际获得的 CPU 时间? 本文先给出可直接复述的结论,再用最小代码说明nice 值 CFS 权重的工作方式、判断依据、项目边界和常见误区。
Linux OOM killer 如何挑选要杀掉的进程,如何保护关键进程? 本文先给出可直接复述的结论,再用最小代码说明OOM killer oom_score_adj的工作方式、判断依据、项目边界和常见误区。
孤儿进程为什么会被 init 收养而不是变成僵尸? 本文先给出可直接复述的结论,再用最小代码说明孤儿进程 init 收养的工作方式、判断依据、项目边界和常见误区。
匿名管道和命名管道 FIFO 的区别是什么,管道的容量与阻塞行为如何? 本文先给出可直接复述的结论,再用最小代码说明管道 FIFO 区别 阻塞的工作方式、判断依据、项目边界和常见误区。
优先级反转是如何发生的,优先级继承如何解决? 本文先给出可直接复述的结论,再用最小代码说明优先级反转 优先级继承的工作方式、判断依据、项目边界和常见误区。
Linux 进程有哪几种状态,R、D、Z 各代表什么含义? 本文先给出可直接复述的结论,再用最小代码说明Linux 进程状态 R D Z的工作方式、判断依据、项目边界和常见误区。
pthread_join 与 pthread_detach 的区别是什么,不回收线程会怎样? 本文先给出可直接复述的结论,再用最小代码说明pthread join detach 资源泄漏的工作方式、判断依据、项目边界和常见误区。
什么是竞态条件,为什么单核 CPU 上也可能发生? 本文先给出可直接复述的结论,再用最小代码说明竞态条件 race condition的工作方式、判断依据、项目边界和常见误区。
SCHED_FIFO 与 SCHED_RR 的区别是什么,实时任务饿死普通进程怎么办? 本文先给出可直接复述的结论,再用最小代码说明SCHED_FIFO SCHED_RR 区别的工作方式、判断依据、项目边界和常见误区。
读写锁适合什么读写比例,写者饥饿如何避免? 本文先给出可直接复述的结论,再用最小代码说明读写锁 写者饥饿的工作方式、判断依据、项目边界和常见误区。
Linux SCHED_DEADLINE 适用于什么场景,它如何保证任务按时完成? 本文先给出可直接复述的结论,再用最小代码说明SCHED_DEADLINE 调度的工作方式、判断依据、项目边界和常见误区。
select、poll、epoll 在 fd 数量增长时性能差异的根源是什么? 本文先给出可直接复述的结论,再用最小代码说明select poll epoll 区别的工作方式、判断依据、项目边界和常见误区。
System V 或 POSIX 共享内存本身为什么不提供同步,需要配什么机制? 本文先给出可直接复述的结论,再用最小代码说明共享内存 同步 信号量的工作方式、判断依据、项目边界和常见误区。
Linux 信号有哪些不可靠性,为什么信号处理函数里只能调用异步信号安全函数? 本文先给出可直接复述的结论,再用最小代码说明Linux 信号 异步信号安全的工作方式、判断依据、项目边界和常见误区。
signalfd 相比传统信号处理函数解决了什么问题? 本文先给出可直接复述的结论,再用最小代码说明signalfd 信号处理的工作方式、判断依据、项目边界和常见误区。
什么场景用自旋锁优于互斥锁,为什么用户态程序很少用自旋锁? 本文先给出可直接复述的结论,再用最小代码说明自旋锁 互斥锁 选择的工作方式、判断依据、项目边界和常见误区。
线程局部存储 TLS 解决什么问题,__thread 变量的生命周期如何? 本文先给出可直接复述的结论,再用最小代码说明线程局部存储 TLS的工作方式、判断依据、项目边界和常见误区。
同进程内线程切换为什么比跨进程切换便宜? 本文先给出可直接复述的结论,再用最小代码说明线程切换 进程切换 开销的工作方式、判断依据、项目边界和常见误区。
本机通信选 Unix domain socket 还是 TCP loopback,性能与功能差在哪? 本文先给出可直接复述的结论,再用最小代码说明Unix domain socket TCP 本机通信的工作方式、判断依据、项目边界和常见误区。
vfork 与 fork 的行为差异和使用风险是什么? 本文先给出可直接复述的结论,再用最小代码说明vfork 与 fork 区别的工作方式、判断依据、项目边界和常见误区。
进程和线程在资源隔离与共享上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明进程与线程区别的工作方式、判断依据、项目边界和常见误区。