通常,这些是由于多个线程同时访问相同的一些内存而造成的。我猜想,线程问题是许多开发人员做噩梦的原因。他们是出了名的难以追踪,错误只发生在特定条件下:所以确定问题的根源是非常复杂的。
通常导致线程问题的原因是所谓的“竞争条件”。我们不会去关注太多的细节,像是这意味着什么,而是从谷歌引用ThreadSanitizer手册:
数据竞争发生在当两个线程同时访问同一变量,并且至少有一个访问是编写状态时。
这些用来追踪的是一个绝对的噩梦,但值得庆幸的是Xcode附带一个新的调试工具叫做Thread Sanitizer,甚至可以在你注意到他们之前帮助识别这些问题。
The Project
我们将创建一个简单的应用程序,使我们能够存款和取款100美元面额。像往常一样,项目的完成版本已在GitHub上(为了方便各位读者,小编已经为大家整理了,请点击这里下载)。
The Account
我们的Account模式非常简单:
······
回复 (0)
微信扫码 立即评论
