目前项目中采用了多进程的机制(暂且称作A进程和B进程)
两进程均使用GUI编程,主要任务:
A进程 -> 主进程,是项目主程序;
B进程 -> 子进程,主要用来显示一个gif的图标,另外还负责一些扫描任务(线程完成);
两进程间采用Linux系统的信号(自定义的)来通信
主要构思:
用户操作到的是A进程,在操作A进程的过程中会发生一些“耗时操作”,此时会导致界面被冻结而无法响应,
这时候我在耗时操作前,先发送一个系统级的信号来启动B进程上gif图标的显示(表示用户等待),待耗时操作完毕再发送一信号关闭B进程上gif图标的显示。
问题:
目前功能已完全实现,效果也很不错,唯一一点是偶尔会发生进程的假死,A进程无法操作,B进程上的那个gif图标也不动了
ps下,两进程都还在, top下也都还正常, 就是界面一点反应也没有了
另外kill掉的话终端会出现系列输出:
[root@rocky]# QWSLock::lock: Identifier removed
QWSLock::unlock: Invalid argument
QWSLock::lock: Invalid argument
QWSLock::lock: Invalid argument
因为两进程均采用了GUI,所以共用一个qwsserver,是不是qwsserver处理界面的时候有问题?
或是其他什么原因造成?
盼解惑!