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

怎么用信号灯控制对共享内存的读写,大家都来指点一下,解决者另开贴给500分

    来源: 互联网  发布时间:2015-10-23

    本文导语:  int ShmmrTlInf(char *ProCod,char *OrgNo,char *TlNo,char *TlName,HXMLTREE lXmlhandle) {   } 现在的问题是,调用该函数的进程锁死,不能继续往下进行; 上述函数打出的日志上看所有值,包括信号灯id都是对的,应该是加解信号灯锁出问...

int ShmmrTlInf(char *ProCod,char *OrgNo,char *TlNo,char *TlName,HXMLTREE lXmlhandle)
{  

}

现在的问题是,调用该函数的进程锁死,不能继续往下进行;
上述函数打出的日志上看所有值,包括信号灯id都是对的,应该是加解信号灯锁出问题了,请各位分析指点一下
我的实现目的是,可能会同时起五个或者更多进程的进程去访问这两块共享内存,都有可能发生读写操作,怎么写才能实现?我看书也没理解清楚,再次恳请大家指点,解决后加分给,绝不食言



|
首先我们应该考虑的是,既然调用该函数的进程死锁,说明没有足够资源来申请。因此原因可能是其他使用此资源的进程在使用后未释放。
利用调试信息看看进程是否在申请资源时阻塞,如果是,那么是上述原因的可能性就比较大。
继续关注。

|
我觉得应该是对于线程来操作的,首先你必须维护一个队列,每次有调用时就需要保存调用者的线程ID,句丙之类的,总之要能够睡棉和唤醒那个线程序,再加一个变量,每当lock的时候就=true,进入之前先判断是不是true如果是,则将线成加入到队列,并且睡眠掉,在调用unlock后,设成false,再唤醒队列最先进入的线程序,再加入的时候必须判断那线程是否已经在睡眠的队列,就可以解决重复调用造成死锁的问题。但是我没有实现,那位够功力的自己写一个出来。

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 如何使用命令行删除Linux下的POSIX有名信号灯
  • 共享内存和信号灯同步问题
  • linux有名信号灯的开关问题
  • 信号灯操作报错:semop:EINVAL(信号量集不存在或参数无效)
  • 信号灯同步2个进程,一个进程如何主动给另一个进程发送通知?
  • 关于开辟信号灯和消息队列的问题
  • 信号灯控制并发进程问题?急
  • linux的信号灯也有惊群效应?
  • 如何使用信号灯实现两个任务的同步?
  • systemV 信号灯问题


  • 站内导航:


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

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

    systemV 信号灯问题 iis7站长之家