作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要创建线程安全变量吗?我将只在 mainThread 和 dispatch_async(dispatch_get_main_queue() 中使用 mydata。
-(void) mainThread
{
mydata = 55;
}
-(void) concurrentThread
{
dispatch_async(dispatch_get_main_queue(), ^
{
mydata = 77;
});
}
最佳答案
我认为没有必要对 mydata
做任何特别的事情在这种情况下,因为它只从主线程更新(假设 mainThread
意味着该方法只从主线程调用)。这也假设您没有尝试阅读 mydata
除了主线程之外的任何地方。
进一步说明:
即使 concurrentThread 正在主线程以外的线程上运行,mydata = 77
出现在被分派(dispatch)到主线程的 block 中意味着分配实际上将发生在主线程上,以某种串行顺序以及在主线程上发生的对该变量的任何其他读/写。因此,假设在访问 mydata 的主线程上没有其他任何代码,则此代码是安全的。
关于ios - 我需要创建线程安全变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501582/
我是一名优秀的程序员,十分优秀!