那么信号量是怎么实现的? 也是锁总线吗?
那么为什么信号量在多核的情况下 不能实现同步功能
请大牛指点一下
11 个解决方案
#1
Linux系统内核的锁机制一般通过3 种基本方式来实现,即原语、关中断和总线锁。
参考:
http://blog.sina.com.cn/s/blog_4c275d990100de45.html###
http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c93.html
参考:
http://blog.sina.com.cn/s/blog_4c275d990100de45.html###
http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c93.html
#2
想请教的是
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
#3
我所理解的,
信号量跟自旋锁在多核下都可以实现同步。
但自旋锁一般用于多线程环境,也就是说,在多核的情况下,同一个进程的线程分配到不同的核上,一直在运行,自旋的意思就是自己一直检测直到条件满足就继续运行,没有一个挂起切换的状态。
而信号量的话必需经常挂起就绪运行这个状态。
所以同步都是可以实现,只是在运行的多核机器的多线程程序自旋锁会更快。
信号量跟自旋锁在多核下都可以实现同步。
但自旋锁一般用于多线程环境,也就是说,在多核的情况下,同一个进程的线程分配到不同的核上,一直在运行,自旋的意思就是自己一直检测直到条件满足就继续运行,没有一个挂起切换的状态。
而信号量的话必需经常挂起就绪运行这个状态。
所以同步都是可以实现,只是在运行的多核机器的多线程程序自旋锁会更快。
#4
信号量在多核下能实现同步吗? 可以
信号量不是以自旋锁为前提的吗?不是,自旋锁只在SMP有效。
自旋锁都能实现多核同步, 信号量能不能实现多核同步?应当可以
#5
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
#6
好象是2。0版本吧
#7
2.4
#8
2.0的内核已经有支持SMP,2.6时代在逐渐完善。
http://www.ibm.com/developerworks/cn/linux/l-linux-smp/index.html
这方面的东西可以去IBM.com看看。
#9
3Q
#10
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
#11
恩 你说的是对的
#1
Linux系统内核的锁机制一般通过3 种基本方式来实现,即原语、关中断和总线锁。
参考:
http://blog.sina.com.cn/s/blog_4c275d990100de45.html###
http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c93.html
参考:
http://blog.sina.com.cn/s/blog_4c275d990100de45.html###
http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c93.html
#2
想请教的是
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
#3
我所理解的,
信号量跟自旋锁在多核下都可以实现同步。
但自旋锁一般用于多线程环境,也就是说,在多核的情况下,同一个进程的线程分配到不同的核上,一直在运行,自旋的意思就是自己一直检测直到条件满足就继续运行,没有一个挂起切换的状态。
而信号量的话必需经常挂起就绪运行这个状态。
所以同步都是可以实现,只是在运行的多核机器的多线程程序自旋锁会更快。
信号量跟自旋锁在多核下都可以实现同步。
但自旋锁一般用于多线程环境,也就是说,在多核的情况下,同一个进程的线程分配到不同的核上,一直在运行,自旋的意思就是自己一直检测直到条件满足就继续运行,没有一个挂起切换的状态。
而信号量的话必需经常挂起就绪运行这个状态。
所以同步都是可以实现,只是在运行的多核机器的多线程程序自旋锁会更快。
#4
信号量在多核下能实现同步吗? 可以
信号量不是以自旋锁为前提的吗?不是,自旋锁只在SMP有效。
自旋锁都能实现多核同步, 信号量能不能实现多核同步?应当可以
#5
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
#6
好象是2。0版本吧
#7
2.4
#8
2.0的内核已经有支持SMP,2.6时代在逐渐完善。
http://www.ibm.com/developerworks/cn/linux/l-linux-smp/index.html
这方面的东西可以去IBM.com看看。
#9
3Q
#10
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
#11
恩 你说的是对的