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

这种情况用多线程好还是用守护进程?

    来源: 互联网  发布时间:2016-12-31

    本文导语:  要实现的目标如下: 创建一个生产线程,不停的进行生产,数据来了就简单的存储到队列的尾部,然后通知消费线程 创建一个消费线程,这个和生产线程异步(速度尽快),处于阻塞状态,来了信号,就循环从队列头...

要实现的目标如下:
创建一个生产线程,不停的进行生产,数据来了就简单的存储到队列的尾部,然后通知消费线程
创建一个消费线程,这个和生产线程异步(速度尽快),处于阻塞状态,来了信号,就循环从队列头取直到队列为空,就挂起
然后还想创建一个主线程,进行显示信息,然后可以输入控制,暂停,恢复,结束什么的

问题:
生产线程过程函数中有一阻塞函数,我创建生产线程之后sleep,线程马上就退出了,貌似是没执行到阻塞函数,如果用了wait,控制台终端的显示就一直被这个线程占用。如果用守护进程的话又涉及进程通讯问题。


谢谢!

|
守护进程的特点是声明周期在是从开机到关机。

如果你的数据在开机和关机这段时间内一直要出于待命状态,你可以使用守护进程。守护进程实际上就是服务进程。后台运行。

|
就是普通的多线程程序而已……不要守护进程


|
看你的说法,
首先 你这个生产者线程,本身也是一个消费者,因为它要等数据来了才进行存储和通知。

为了简化问题,假定你的生产者线程为固定时间间隔进行生产,比如5秒生产一个东西

则你应该这样写
伪代码:
1, 创建生产者线程,消费者线程,控制线程
2,生产者线程入口函数
do{
if(控制退出)
     break;
进行生产(比如耗时5秒 sleep(5000));
生产完成要give一个信号量;
}while(1);
3,消费者入口函数
do{
if(控制退出)
     break;
take信号量;(take不到会阻塞)
进行消费;
}while(1);
4,控制线程
do{
接受键盘消息;
根据消息执行判断,采取控制
}while(1);
5,对以上3个线程开始调度。

OK了

写的很简陋,见谅

|
sleep之后线程只是回到blocked状态而已,到了时间就会重新执行,而你的线程sleep之后退出,肯定有问题

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












  • 相关文章推荐
  • 增加进程数或减少进程数在任何情况下都不会引起死锁吗?谢谢!!!!
  • 请问在UNIX上如何看一个进程的内存使用情况?
  • 关于子进程杀不死的情况
  • 如何查看某个进程的cpu使用和内存使用情况????
  • 捕捉子进程退出的信息, 详细情况请进!!!!!!!!!!!!!!!!!!!!
  • AIX下怎么在不重起机器的情况下杀FORK()死循环的进程
  • 文件操作 多个进程打开文件 不加锁 情况如何
  • 请教查看某个特定进程内存消耗情况的命令,急!
  • 求助:在什么情况下需要用到进程编程?谢谢!
  • 如何查看一个目录的占用空间和一个进程的占用内存情况
  • linux如何查看执行中的进程的输出情况?
  • 进程异常退出时 Unix 在什么情况下会不产生 core dump 文件?
  • 如何在linux系统上看一个进程的所有线呈的堆栈情况?
  • linux下如何查看某进程占用内存情况?
  • 请问在unix中,如何监视某一进程中的某个函数的运行情况?
  • Linux系统会不会把一个工作中的进程的cpu使用情况记录在文件中?
  • ~◎大虾们,在linux下怎么得到一个进程的cpu mem的使用情况,用从c/c++程序!
  • redhat ent 4 u4上,如何象readhat ent3 u6版本那样使用top可以查看每个逻辑CPU的利用率以及运行进程的资源使用情况?
  • 请问我这种情况该使用哪种进程间通信方式,如何实现
  • 在java中,什么情况下属于不同的进程,是在不同的classload中加载的class,还是在不同的jvm中加载的class
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 请问什么情况下用servlet,什么情况下用ejb,什么情况下用jsp.给出理由?
  • linux下free命令显示的内存使用情况分析
  • 如何查看分区情况和硬盘空间使用情况?
  • 求助:java实现显示linux下的cpu占用率,内存使用情况,硬盘占用情况
  • shell 函数中的用exit时,什么情况下仅仅退出函数,什么情况下退出整个shell程序?
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • 在AIX(4.3)系统上如何查看内存情况
  • SWAP分区满的问题,有同学碰到这种情况吗?
  • AIX 4.3.X中用什么命令能查看到系统内存的使用情况?
  • 如何编程查看 cpu 内存 占用情况


  • 站内导航:


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

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

    浙ICP备11055608号-3