《代码整洁之道》—第13章13.8节很难编写正确的关闭代码

简介:

本节书摘来自异步社区《代码整洁之道》一书中的第13章13.8节很难编写正确的关闭代码,作者【美】Robert C. Martin,更多章节内容可以访问云栖社区“异步社区”公众号查看。

13.8  很难编写正确的关闭代码
编写永远运行的系统,与编写运行一段时间后平静地关闭的系统是两码事。

平静关闭很难做到。常见问题与死锁[15]有关,线程一直等待永远不会到来的信号。

例如,想象一个系统中有个父线程分裂出数个子线程,父线程等待所有子线程结束,然后释放资源并关闭。如果其中一个子线程发生死锁会怎样?父线程将一直等待下去,而系统就永远不能关闭。

或者,考虑一个被指示关闭的类似系统。父线程告知全体子线程放弃任务并结束。如果其中两个子线程正以生产者/消费者模型操作会怎样呢?假设生产者线程从父线程处接收到信号,并迅速关闭。消费者线程可能还在等待生产者线程发来消息,于是就被锁定在无法接收到关闭信号的状态中。它会死等生产者线程,永不结束,从而导致父线程也无法结束。

这类情形并非那么不常见。如果你要编写涉及平静关闭的并发代码,请多预留一些时间搞对关闭过程。

建议:尽早考虑关闭问题,尽早令其工作正常。这会花费比你预期更多的时间。检视既有算法,因为这可能会比想象中难得多。

相关文章
|
5月前
|
设计模式 自然语言处理 程序员
普通程序员要成为高级程序员,一定要学会重构
普通程序员要成为高级程序员,一定要学会重构
35 0
|
7天前
|
算法 程序员
编程遗产:祖传代码
编程遗产:祖传代码
|
29天前
|
安全 NoSQL 程序员
【年度征文 健壮代码 心得体会】 如何编写健壮的C++代码
【年度征文 健壮代码 心得体会】 如何编写健壮的C++代码
53 0
|
开发框架 缓存 监控
测试是否有必要看开发代码?如何能看懂?
测试是否有必要看开发代码?如何能看懂?
|
前端开发 小程序 IDE
「趣学前端」给不懂技术的朋友简单演示,代码是怎么被编写出来的
我身边不乏非程序员的朋友,对我的工作多多少少带点好奇心。突发奇想,准备了一个小功能,简单演示前端日常开发中的代码是怎么被编写出来的。
125 1
|
数据库
高质量代码优化!谈谈重构项目中if-else代码的几点建议
本篇文章探讨了代码的重构以及优化,主要针对代码中大量的条件判断if-else语句问题提出了具体的优化建议。介绍了优化if-else语句的几种有效的方法,包括switch,接口interface以及数据库实现对条件语句进行的优化。
141 0
高质量代码优化!谈谈重构项目中if-else代码的几点建议
|
设计模式 安全 测试技术
经验总结 | 重构让你的代码更优美和简洁
最近,笔者有幸对高德打车订单Push项目进行了重构,与大家分享一下代码重构相关的工作经验,希望对大家有所启发。
187 1
经验总结 | 重构让你的代码更优美和简洁
【观点】如何写出无法维护的代码
导读:酷壳网的陈皓写了很多优秀的文章,这篇《如何写出无法维护的代码》相信一定能触动大家的兴奋点。 文章内容如下: 什么叫“创造力”,创造力就是——就算是要干一件烂事,都能干得那么漂亮,那么有创意的能力。
1007 0