LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1432|回复: 25

linux下有对某个数字有同步的函数吗?

[复制链接]
发表于 2004-11-2 11:18:57 | 显示全部楼层 |阅读模式
比如我多个线程要对某个int变量进行增加,。
在WINDOWS下有InterlockedDecrement之类的函数来进行原子操作增加和减少,
LINUX下有类似的函数吗
发表于 2004-11-2 11:22:16 | 显示全部楼层

大不了自己写一个

...
pthtread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
...

pthread_mutex_lock(&mutex);
++var;
pthread_mutex_unlock(&mutex);

...
 楼主| 发表于 2004-11-2 11:52:24 | 显示全部楼层
谢谢你,我知道可以用这个。
但是如果有系统提供的,肯定效率高一些。
如果仅仅只是对某个变量进行同步,用pthread_mutex_t代价有点高了。
我想LINUX下也应该有自旋锁吧。
发表于 2004-11-4 02:19:55 | 显示全部楼层
自旋锁?干啥地?
发表于 2004-11-4 11:43:57 | 显示全部楼层
自旋锁是在内核中使用的,不是提供给进程使用的吧。
 楼主| 发表于 2004-11-4 11:58:15 | 显示全部楼层
最初由 kj501 发表
自旋锁是在内核中使用的,不是提供给进程使用的吧。

内核里有spin_lock,USER MODE里应该就有对数字进行同步的函数提供啊,,FT
发表于 2004-11-5 22:06:16 | 显示全部楼层
最初由 elssann 发表
谢谢你,我知道可以用这个。
但是如果有系统提供的,肯定效率高一些。
如果仅仅只是对某个变量进行同步,用pthread_mutex_t代价有点高了。
我想LINUX下也应该有自旋锁吧。


恐怕是你多虑了吧。自旋锁主要是用在多处理器上,在内核中实际上是用于多处理器同步的。
发表于 2004-11-6 11:05:57 | 显示全部楼层
最初由 elssann 发表
内核里有spin_lock,USER MODE里应该就有对数字进行同步的函数提供啊,,FT

既然如此,谁能介绍一下这些函数是如何使用内核的自旋锁机制的?
发表于 2004-11-6 12:07:02 | 显示全部楼层
最初由 elssann 发表
内核里有spin_lock,USER MODE里应该就有对数字进行同步的函数提供啊,,FT

这是什么逻辑。。。
发表于 2004-11-6 17:53:12 | 显示全部楼层
与自增变量同步运行的函数?
不懂。
用 for 不就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表