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

关于使用信号量的一个进程被kill的问题

    来源: 互联网  发布时间:2016-09-13

    本文导语:  两个进程使用信号量互斥使用一块内存,一个始终跑着,一个可能有时候需要被kill掉重启,如果被kill掉的时候P操作完了,这样锁就会出现问题了,使用了undo标志,但undo最多可以3万多次,就会溢出,有什么好的解决...

两个进程使用信号量互斥使用一块内存,一个始终跑着,一个可能有时候需要被kill掉重启,如果被kill掉的时候P操作完了,这样锁就会出现问题了,使用了undo标志,但undo最多可以3万多次,就会溢出,有什么好的解决方法吗

|
SEM_UNDO只有p和v操作在同一进程时才能使用,否则容易溢出,
生产消费类型可以用SEM_UNDO,但是不能直接用,你可以用信号量保护一块共享内存,
然后在共享内存中记录生产者产出量,消费者和生产者通过信号量同步去访问共享内存,
这么做,p和v就处于同一进程了.

二值同步还可以用文件锁,性能跟信号量差不多,
免去SEM_UNDO烦恼,因为文件锁会随进程退出自动释放.

|
进程退出自动就会释放锁吧

|
作互斥量(二值信号量时),SEM_UNDO应该没有问题吧!
在同一进程中
P操作时, semadj 会+1.
P操作时, semadj 会-1.
不会溢出啊!

生产者消费者类型的应用中就不能用SEM_UNDO,

    
 
 

您可能感兴趣的文章:

  • 在linux下怎么使用信号量?
  • linux 中信号量的使用 当信号初始化的时候设置的值大于1将是如何?
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • 使用信号量如何退出线程?
  • 使用信号量如何让父子进程交替运行?
  • 哪位有信号量和共享内存同时使用的例子??高分
  • 信号量使用,急!!!!!!!
  • linux posix信号量使用疑问
  • 请问在单进程,多线程程序里,线程间使用IPC的信号量来同步,能行吗?
  • 不使用semget等信号量相关的函数如何实现多个进程对同一个文件的访问
  • 请教使用sem_unlink删除信号量的问题
  • 未名信号量不同进程间使用的问题
  • linux 下使用信号量编程的问题·~~~~谁能帮帮我啊????
  • 多个独立的进程使用信号量??
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • 怎么打开一个进程并得到这个进程内存使用的信息?
  • fork一个子进程后在打开一个文件,如何在子进程中使用这个打开的文件描述符号
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 如何查看某个进程的cpu使用和内存使用情况????
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • 如何使用另外进程的socket
  • [急]linux对于c 如何获得一个进程及其子进程从开始到结束 它的最大CPU% MEM%使用率
  • 子进程用_exit退出,父进程为什么就不能让stdout使用缓存呢?
  • AIX系统中不使用lsof,还有没有其他命令可以知道端口是被那个进程使用
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • 请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
  • 计算进程的内存使用量应该使用/proc/self/statm哪几个量相加表示?
  • 怎么查一个特定进程使用的端口号啊
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 有人研究 或者 使用 实时进程 吗?请进来好吗?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何使用命令行删除Linux下的POSIX有名信号灯
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • linux中使用信号进行定时编程会不会引起打断不应该被打断的程序造成错误?
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 信号阻塞函数sigsuspend()的使用。
  • pselect函数使用问题,怎么没有屏蔽掉信号阿
  • sigwait和pthread_kill的使用.只发了一个信号阿?怎么有等到两个????
  • 如何使用信号灯实现两个任务的同步?
  • c#使用ManagedWifi查看当前Wifi信号并选择wifi的示例
  • 使用wait(&status)获取子进程异常信号问题
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • asp程序使用的access在Linux下如何使用!
  • c/c++预处理命令预#,##使用介绍
  • 新装的Linux使用root用户不能使用FTP?
  • 在div中使用css让文字底部对齐的方法
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • Python namedtuple(命名元组)使用实例


  • 站内导航:


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

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

    浙ICP备11055608号-3