由买买提看人间百态

topics

全部话题 - 话题: semget
(共0页)
n**d
发帖数: 9764
1
来自主题: Programming版 - Semaphores in Linux (转载)
【 以下文字转载自 Linux 讨论区 】
发信人: noid (DoIneedit?), 信区: Linux
标 题: Semaphores in Linux
发信站: BBS 未名空间站 (Sat Jan 10 00:14:53 2009)
http://www.linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1
in this link, the author says "In general, the older Unix-based systems uses
the System V version and the current Linux-based systems use the POSIX
version."
The System V uses semget()... and POSIX uses sem_init...
However, in my company's Linux system, the gcc compiles semget()...
succesfu
n**d
发帖数: 9764
2
来自主题: Unix版 - Semaphores in Linux (转载)
【 以下文字转载自 Linux 讨论区 】
发信人: noid (DoIneedit?), 信区: Linux
标 题: Semaphores in Linux
发信站: BBS 未名空间站 (Sat Jan 10 00:14:53 2009)
http://www.linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1
in this link, the author says "In general, the older Unix-based systems uses
the System V version and the current Linux-based systems use the POSIX
version."
The System V uses semget()... and POSIX uses sem_init...
However, in my company's Linux system, the gcc compiles semget()...
succesfu
d******s
发帖数: 113
3
来自主题: Unix版 - Unix semaphore
I use system V semaphore.
But for "semget" function, I can only set the key=1234,
nsem=1.
For any other key value, the function will fail "No space
left on device".
For key=1234, nsem!=1, the function will fail, not valid
argument.
What is wrong?
Thanks!
C*****e
发帖数: 13
4
Maybe wrong, just according to my knowledge.
Shared memory is not syncronized autmatically. You should use some
other kernel routines to avoid collision, like semopher operations.
Because semctl and semget is in kernel mode, the internal data is not
protected in traditional single CPU kernel. In multi-CPU mode, these
internal data maybe "hotspot" by several CPUs, so the kernel uses
spinlocks to protect them. The spinlocks usually use hardware syncronization
mechenism to keep syncronized. In X86
(共0页)