首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >linux中的等待队列与信号量

linux中的等待队列与信号量
EN

Stack Overflow用户
提问于 2012-10-29 14:21:58
回答 1查看 3.6K关注 0票数 3

为什么我们在linux内核中使用等待队列,而不是使用信号量进行同步?使用等待队列和信号量进行同步有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 14:35:16

信号量是一种变量或抽象数据类型,它提供了一种简单但有用的抽象,用于控制并行编程环境中多个进程对公共资源的访问。()

现在,信号量更多的是一个概念,而不是一个具体的实现。

linux 信号量数据结构实现使用等待队列。如果没有等待队列,您将不知道哪个进程首先需要资源,这可能会导致某些进程的等待时间非常长。等待队列保证了公平性,缓解了资源匮乏的问题。

代码语言:javascript
运行
复制
struct semaphore {
    int count; //+ve or -ve indicates resource free/busy state
    int waking; //number of waiting processes
    int lock ;  /* to make waking testing atomic */
    struct wait_queue *wait; //queued, to prevent starvation, ensure fairness
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13116779

复制
相关文章

相似问题

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