我在一个相当大的代码集中的某处有一个线程安全漏洞。它可以简单地通过在我的CATiledLayer
中在模拟器中滚动几秒来实现随机崩溃,并且可以通过将我的绘图代码锁定到单个线程中来解决(这是不理想的,因为CATiledLayer被设计为多个thread和我的绘图代码很慢,需要它。)
如何调试线程安全问题?我怀疑它在我的代码中某处懒惰地获取(和缓存)正在绘制的数据,但这并没有缩小它。
我已经阅读了“并发编程指南”,但没有看到任何有关调试的内容,它只讨论了如何构建代码。
答案 0 :(得分:1)
您使用哪种并发方法? GCD还是NSThread?如果我不能说服你使用单线程进行绘制,请尝试在setter / getter方法中使用@syncronized
(或者使用原子属性,如果使用合成setter / getter)。