monitor version 用原子操作的疑惑

77 views
Skip to first unread message

thepow...@gmail.com

unread,
Dec 17, 2017, 10:04:59 PM12/17/17
to skynet-users

skynet_monitor.c ,34行,用ATOM_INC(&sm->version) , 为啥不直接用 ++sm->version
我看代码每个 monitor 只在对应的thread_worker 中修改,应该不会导致多个线程同时写的问题.

云风 Cloud Wu

unread,
Dec 17, 2017, 10:37:38 PM12/17/17
to skynet...@googlegroups.com
因为 A 模块的 B api 只会在 C 情况下调用,所以 B api 的实现可以这样。

如果这个理由成立,还把 A 划分为一个模块的意义在哪里呢?或者说, A 模块怎样约束调用者遵守 C 这个约定?


<thepow...@gmail.com>于2017年12月18日周一 上午11:05写道:

skynet_monitor.c ,34行,用ATOM_INC(&sm->version) , 为啥不直接用 ++sm->version
我看代码每个 monitor 只在对应的thread_worker 中修改,应该不会导致多个线程同时写的问题.

--
您收到此邮件是因为您订阅了Google网上论坛上的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users...@googlegroups.com
要发帖到此群组,请发送电子邮件至skynet...@googlegroups.com
访问此群组:https://groups.google.com/group/skynet-users
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/skynet-users/1784f110-1197-4a3e-9167-6b99d24f509b%40googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

thepow...@gmail.com

unread,
Dec 18, 2017, 12:35:32 AM12/18/17
to skynet-users
明白了,感谢!

云风 Cloud Wu

unread,
Dec 18, 2017, 5:14:52 AM12/18/17
to skynet...@googlegroups.com
补充: 这里的确不需要原子操作。但因为这个模块是

1. 需要在多线程环境下使用。
2. version 这个变量 *有可能* 被多个线程访问。

如果只考虑模块本身(从内聚性考虑), 以及这个模块有可能被扩展(更多对 version 的访问),且这里使用原子操作也没有什么额外开销,api 也是低频调用,
所以没有太大必要根据目前实际的全局情况优化掉这里的原子操作。


<thepow...@gmail.com>于2017年12月18日周一 下午1:35写道:
明白了,感谢!

--
您收到此邮件是因为您订阅了 Google 网上论坛的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users...@googlegroups.com
要向此群组发帖,请发送电子邮件至 skynet...@googlegroups.com
访问此群组:https://groups.google.com/group/skynet-users
要在网络上查看此讨论,请访问 https://groups.google.com/d/msgid/skynet-users/f73fb398-2e95-42c1-99b8-77344a6c3a53%40googlegroups.com
要查看更多选项,请访问 https://groups.google.com/d/optout

thepow...@gmail.com

unread,
Dec 19, 2017, 4:03:30 PM12/19/17
to skynet-users
明白,再次感谢!

在 2017年12月18日星期一 UTC+8下午6:14:52,云风写道:
补充: 这里的确不需要原子操作。但因为这个模块是

1. 需要在多线程环境下使用。
2. version 这个变量 *有可能* 被多个线程访问。

如果只考虑模块本身(从内聚性考虑), 以及这个模块有可能被扩展(更多对 version 的访问),且这里使用原子操作也没有什么额外开销,api 也是低频调用,
所以没有太大必要根据目前实际的全局情况优化掉这里的原子操作。


<thepow...@gmail.com>于2017年12月18日周一 下午1:35写道:
明白了,感谢!

--
您收到此邮件是因为您订阅了 Google 网上论坛的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users+unsubscribe@googlegroups.com
Reply all
Reply to author
Forward
0 new messages