我真的想知道为什么所有的源代码都实现了 pthread_mutex_lock 永远不会按照定义测试其返回值:
即使在书中,示例也不会测试锁是否出错,代码只是执行锁定。
我有什么理由错过让它未经测试吗?
答案 0 :(得分:3)
基本上,唯一的“有趣”错误是EINVAL
,在大多数程序中只会因为内存损坏而发生,或者,正如我从我自己的痛苦经历中所知,在析构函数已经破坏一些程序之后的程序关闭期间互斥。我看到它的方式,对这种错误的唯一合理的反应是中止程序,另一方面,如果由于程序已经关闭而错误地发生错误则非常不方便。当然,这可以解决,但它并不是那么简单,对大多数程序来说并没有多少。
答案 1 :(得分:1)
首先,我认为“所有源代码”和“从不测试”太强大了。我认为“一些”和“经常”会更准确。
在书中,为了清楚说明,通常会省略错误检查代码。
至于现实世界的代码,我想答案必须是认为失败的可能性非常低。这是一个很好的假设值得商榷。