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

    xiaoxiao2024-03-29  11

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

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

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

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

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

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

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

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)