linux系统中实现阻塞有哪些方法 等待队列 自旋锁 中断

linux系统中实现阻塞有哪些方法 等待队列 自旋锁 中断,第1张

你只在 server 进程中(对应spid==0),调用 open_queue 来打开消息队列,即msqid只在这个进程中有效,在host进程中(对应cpid==0),由于msqid无效,所以无法发送消息。 解决方法:只要把 do { msqid = open_queue(key)} while (msqid == -1) 这段代码移到第一个fork之前,这样所有的进程中的msqid就都指向那个队列了。 还有问题可以baidu hi我,别忘了加分。

我帮你搜索到如下的回复希望对你有帮助《Linux就该这么学》

概念与术语

1内核里面的一个队列,可以将对象加入到队列中,

2可以选择条件休眠和无条件休眠,一般情况下是条件休眠用得较多。

3作用:阻塞读。当运用程序读数据但是现在还无数据可读时,往往会先挂起,

4让其他线程先走,等有数据可读时再唤醒

5那么什么时候唤醒呢?怎样唤醒呢?

6这里等待队列就派上用场了。读的时候若无数据可读则加入到等待队列中,

7写入的时候唤醒这个队列。

8可以类比运用程序编程中的pthread_cond_wait()与pthread_cond_broadcast()记忆。

函数接口

include/linux/wait.h


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8149112.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存