日期:2014-05-16  浏览次数:20570 次

还是DLL与主程序通信的问题
我把问题描述的具体一点,本人经验欠缺,大家只要稍微给点提示就行,其余的我自己看书或到网上找去。
        现在在Linux/Unix下有这么一个工程:一个主程序执行中间调用一个动态链接库,由于这个动态链接库中的函数执行时间比较长,需要几分钟,主程序就需要实时的知道动态链接库中的函数执行到哪里了,我想隔一段时间从动态链接库向主函数传递一些字符串,然后主程序在GUI上立刻显示出来给用户看,减少用户等待的焦灼感。我想问如果用消息队列之类的通信技术就需要在主程序中有一个专门处理消息的函数,这个函数如果在执行动态链接库后再调用会不会导致只有等到动态链接库执行完了之后才会把所有的信息一下子全显示出来?那样就没有什么意义了。
        在主程序中调用动态链接库是是不是主程序就不会继续往下执行了?等在那里,等动态链接库中被调用的函数执行完了之后才继续往下走?那我这种情况该如何解决呢?
        谢谢指点,不知道我有没有把我的问题表述明白。

------解决方案--------------------
“我想问如果用消息队列之类的通信技术就需要在主程序中有一个专门处理消息的函数,这个函数如果在执行动态链接库后再调用会不会导致只有等到动态链接库执行完了之后才会把所有的信息一下子全显示出来?那样就没有什么意义了。
在主程序中调用动态链接库是是不是主程序就不会继续往下执行了?等在那里,等动态链接库中被调用的函数执行完了之后才继续往下走?那我这种情况该如何解决呢?”
==================
这段话看起来有点累,能不能换用通俗的语法表达你的思想?
------解决方案--------------------
当然可以,最简单就是写个回调函数
再说了,这个和LINUX下有什么关系?就算Windows下同样也有这样的问题
------解决方案--------------------
这个肯定可以了,而且是一种常用方法。
不过要单开一个线程才好
------解决方案--------------------
自己编写的动态库,可在动态库中将进度数据通过线程传递到主进程;
已经成产品的动态库,可能无法改动;