面试题答案
一键面试1. context.WithTimeout
- 作用:创建一个带有超时时间的
context
。当设定的超时时间到达,该context
会被取消,所有基于此context
创建的子context
也会被取消。常用于设置一个操作的最长执行时间,例如网络请求、数据库查询等操作,防止其无限期执行。 - 性能关注特性:
- 超时时间设置合理性:如果超时时间设置过短,可能导致正常操作还未完成就被取消;设置过长则可能在出现问题时不能及时释放资源。
- 取消传播性能:确保在超时时,取消信号能够快速且有效地传播到所有相关的子
context
和依赖此context
的操作,避免资源浪费和潜在的死锁。
2. context.WithCancel
- 作用:创建一个可取消的
context
。通过返回的取消函数,调用者可以在任何需要的时候手动取消该context
,进而取消所有基于此context
创建的子context
。常用于需要根据业务逻辑提前终止某些操作的场景,比如用户主动取消一个正在进行的下载任务。 - 性能关注特性:
- 取消及时性:调用取消函数后,相关操作应尽快响应取消信号并停止,减少不必要的资源消耗。
- 资源释放:确保取消操作能够正确释放相关资源,如关闭文件描述符、网络连接等,避免资源泄漏。