当前位置:  技术问答>linux和unix

读写问题,请求优秀的处理方案

    来源: 互联网  发布时间:2016-05-04

    本文导语:  问个问题,有个消息队列,两个线程,一个负责写,一个负责读。当消息队列有数据时,读线程将消息弹出,否则等待。当需要写时,写线程将消息压入队列。linux怎么处理?使用POSIX/C。 现有方案: 1、写消息时,...

问个问题,有个消息队列,两个线程,一个负责写,一个负责读。当消息队列有数据时,读线程将消息弹出,否则等待。当需要写时,写线程将消息压入队列。linux怎么处理?使用POSIX/C。

现有方案:
1、写消息时,使用mutex/spinlock锁定消息队列。
2、写完后,使用pthread_cond_signal/sem_post通知
3、读线程使用mutex/spinlock检查,有则从队列中摘取消息
4、使用pthread_cond_wait/sem_wait等待。

由于使用2个锁,感觉不是很好。请求尽量简洁的方案。

|
我是说你自己实现的队列怎么可以用select(),

我看1楼也跟我2楼的回答一样,以为你用的是系统自带的消息队列。

你自己实现的如你三楼的基于链表的队列,怎么可能可以使用select()?

select()也只是内核封装了一下数据源情况有变化时的触发机制,你如何可以直接用到你自己实现的队列里去?


|
可以将消息队列和一个管道结合起来用,这样就可以用select()或者poll()了。unix网络编程卷2里面有现成的例子,你可以参考一下。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c++ boost thread库读写锁介绍
  • 自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • linux 下能否读写.dbf 或者.xls格式的文件,怎样读写?高手指点,拜谢!!!
  • 最新Windows下c++读写锁SRWLock介绍
  • CentOS5.2 如何设置目录读写权限,要求子目录均可以读写。
  • windows下c/c++读写锁实现原理及代码参考
  • SD卡的驱动只能支持读写2GB的卡,如果要读写更大容量,该修改什么地方?
  • c#/ASP.NET操作cookie(读写)代码示例
  • socket是否可以同时读写 iis7站长之家
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 在中断服务程序里可以进行文件的读写操作么?
  • linux多线程无法进行阻塞方式的读写操作
  • 有谁知道,Linux下文件的读写原理是怎样的?急
  • 文件或文件夹,如何指定某用户的读写权限?
  • socket是否可以同时读写
  • 如何通过LD_PRELOAD降低程序的读写速度
  • 请问JAVA如何读写注册表
  • 怎样编程实现I/O端口的读写?
  • 如何以独占式读写文件?
  • 紧急求助,读写Flash ROM。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3