number headings: auto, first-level 2, max 6, 1.1
2 通用八股
2.1 死锁产生的条件是什么
- 死锁是指在多线程的并发执行中,因争夺互斥资源所导致的一种循环等待,且若无外力的作用时该情况会无限僵持下去的现象。
- 死锁产生的必要条件有:
- 互斥条件:线程所争夺的资源为互斥资源,即同一时刻内只允许被一个线程访问的资源
- 循环等待条件:发生死锁时,必定存在的循环等待现象
- 保持并请求条件:线程在新的互斥资源前已经持有了某一互斥资源
- 不可剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
2.6 讲一讲IO模型(阻塞、非阻塞、同步、异步)
3 用户态开发专题
3.1 通用用户态开发
3.1.1 如何实现网络编程中的某一端口的快速重启
- 在程序崩溃或被强制结束时,其所绑定的某一端口上可能会留存有未被来得及关闭的连接。此时若有新的进程尝试重新绑定该端口,则可能遇到端口仍然被占用的错误。
- 在程序绑定端口之前,使用
setsocketopt
开启 SO_REUSEADDR
选项,允许绑定到一个已存在连接的地址(开启该选项后甚至允许多个进程共用同一个端口,但是这些进程必须同时开启该选项)。