首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C Linux编程中的信号量

问C Linux编程中的信号量
EN

Stack Overflow用户
提问于 2014-06-26 03:02:48
回答 1查看 984关注 0票数 1

我将接管一些在Linux (Centos)中运行的C代码,并广泛使用信号量。代码的编写方式:

./方案1

这个程序启动了一组使用互斥和信号量的进程。

./方案2

这个程序还启动了一组进程,这些进程使用互斥量和信号量。

我已经意识到,Program1和Program2使用了同名的信号量。在Linux编程中,不同的程序可以使用相同的信号量吗?我猜不是,但同样的名字把我搞糊涂了。他们使用相同的源代码来启动和处理信号量。

使用以下命令调用信号量:

我读过,这些都是进程信号量..。如果Program1创建了SEMAPHORE1,Program2可以访问SEMAPHORE1吗?

感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 03:08:57

假设您指的是命名信号量(甚至是存储在共享内存中的未命名信号量,这两者都可以用sem_open创建),它们通常是在进程之间共享的。

使用semget和相关调用的信号量使用ID键而不是名称,但它们的使用模式相似。

信号量是进程间通信( IPC )方法之一.

通过在非共享内存中使用一个未命名的变量,您可以创建一个只有一个进程的信号量,并且这只能供给定进程的线程访问,但在我的经验中,这不是一个常见的用例。semget系列的呼叫还可以为您提供进程私有信号量。

另一方面,Mutexes倾向于在单个进程中更多地用于线程间通信,但它们中甚至有一个变体可以在进程间工作。

您创建一个允许共享互斥的pthread_mutexattr (属性),然后在初始化要共享的互斥对象时使用该属性。显然,互斥必须在共享内存中,以便多个进程能够访问它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24421718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档