在Android中,我可以安全地访问和修改来自不同线程的原始类型。我使用这个方法在OpenGL绘制循环和主线程Android UI中修改的用户设置之间共享数据。通过将每个设置存储在一个原始类型中,并使每个独立于其他变量的值,可以在不使用锁或同步关键字的情况下安全地修改所有这些变量。
在Objective-C中也是如此吗?我读到,在变量上放置atomic本质上会导致合成的getter和setter使用锁,类似于在Java中使用同步方法。我还读到,这样做的原因是为了防止对象在被另一个线程读取时部分修改。
但是像Java一样,原始类型是否免受部分修改的影响呢?如果是这样的话,似乎我可以使用Java中相同的范例在线程之间共享数据。但是,对于原始类型,atomic关键字似乎是无意义的,是吗?
我还读到,比使用atomic变量更强大而且更快的解决方案是在从多个线程访问的对象使用之前复制它们。但我不确定如何实现这一点。一个非原子对象在被复制时不能被修改,从而损坏副本,是吗?
在Objective-C中也是如此吗?我读到,在变量上放置atomic本质上会导致合成的getter和setter使用锁,类似于在Java中使用同步方法。我还读到,这样做的原因是为了防止对象在被另一个线程读取时部分修改。
但是像Java一样,原始类型是否免受部分修改的影响呢?如果是这样的话,似乎我可以使用Java中相同的范例在线程之间共享数据。但是,对于原始类型,atomic关键字似乎是无意义的,是吗?
我还读到,比使用atomic变量更强大而且更快的解决方案是在从多个线程访问的对象使用之前复制它们。但我不确定如何实现这一点。一个非原子对象在被复制时不能被修改,从而损坏副本,是吗?