免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2174 | 回复: 2
打印 上一主题 下一主题

[内核入门] per-cpu变量之间是如何同步的? [复制链接]

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
1 [报告]
发表于 2016-06-02 22:01 |显示全部楼层
回复 1# tomxue0126


为什么要更新,本来PER CPU变量就是一人CPU一个副本,互相独立的。这是它的本意,一个核改了,如果去同步修改到其它核的副本那不就成全局变量了吗。

访问别人的核的副本,用per_cpu就行了。它会下接算出对应的核的副本的地址的。

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2016-06-06 10:29 |显示全部楼层
本帖最后由 Tinnal 于 2016-06-06 10:30 编辑

回复 3# tomxue0126


回复 2# Tinnal

谢谢答复!
不过还是没理解。
你也说每个CPU一个变量副本,既然是副本,好歹也要和原始变量保持一致吧?
不会,各是各的。


如果每个CPU看到的变量副本值都不同,那这程序还能正常工作吗?
为什么不能呢


PERCPU变量的目的就是每核一份,不共享。 如果要共享,用全局变量就行了。


C语言有局部变量的概念,每个函数都是独立的,那程序会出问题吗?
   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
3 [报告]
发表于 2016-06-06 10:34 |显示全部楼层
如果不需要和原始变量保持一致,那为什么不直接用4个不同的变量?(假设是个4核处理器)
用4个不同的变量,不同核的代码就不能复用了呀。


per-cpu的出现是为了解决加锁的问题,但没说不要同步啊
没说,不代表要做。per_CPU的目的,是解决各核的数据依赖,让和个能并行工作,互相不阻塞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP