c - 线程共享局部变量?
问题描述
我了解到线程共享相同的内存但不共享寄存器。
另一方面,我还读到线程不共享局部变量,这怎么可能?
这不是矛盾吗?
解决方案
我还读到线程不共享局部变量,这怎么可能?
同一个进程的线程共享相同的地址空间,它们遵循相同的块和函数的范围规则,所以如果你声明一个全局变量或者你将一个变量作为指针参数传递给线程,这个变量在线程和你之间是共享的需要各种预防措施才能对其进行修改(同步)。
我了解到线程共享相同的内存但不共享寄存器。
线程不共享寄存器,因为每个线程在不同的内核上运行(这是一种简化,因为在现代架构中一个内核可以有多个线程)并且每个内核都有自己的寄存器,因此您需要同步方法来处理这个问题。
推荐阅读
- android - 使用新数据调用 invalidate() 后 MPAndroid 图表消失
- java - Java 调试器未针对行断点暂停/停止
- xamarin.forms - 动态绑定单选按钮 xamarin 和单击事件
- mvvm - 绑定Textbox详情时如何避免属性过多
- sql - 如何插入到 2 个表中?
- linux - mod_jk 无法连接 Apache 和 tomcat
- javascript - 更新对象的 useState 数组中的对象值
- javascript - 如何计算开始日期和结束日期期间的周数?
- javascript - 从 Amazon S3 存储桶加载图像时遇到问题(不使用 URL)
- flutter - RenderBox 没有在 Flutter 中布局