• 6340阅读
  • 6回复

关于函数指针与slot-signal机制的效率问题 [复制链接]

上一主题 下一主题
离线cemond
 
只看楼主 倒序阅读 楼主  发表于: 2006-07-20
哪位朋友解释一下这两种方式优缺点,看过一个资料说slot机制要比函数指针慢,大概从发出信号到函数接收需要50毫秒时间,不知函数指针能达到什么效果,希望大家能解释一下.
[ 此贴被XChinux在2006-07-20 19:55重新编辑 ]
离线igoo
只看该作者 1楼 发表于: 2006-07-21
我是菜鸟,随便说说:
一个对象emit一个signal之后,qt系统要通过一套机制找到signal对应的slot来执行
而函数指针(函数回调)没有那个查找slot的过程,直接运行
离线cemond
只看该作者 2楼 发表于: 2006-07-21
我是在一个单独的线程中发出信号来让主窗体中的控件响应,例如用一个线程来循环接收来自网络的消息,接收到消息后通知窗口控件显示接收的内容,由于发送的数据量特别大,故效率就成了很大的问题,我试着用了QThread的postevent和slot-signal方式实现,效果都不是很明显,所以看看用函数指针能不能行 ,欢迎大家来讨论一下.
离线giscn
只看该作者 3楼 发表于: 2006-07-25
signal/slot需要一些额外的处理,效率肯定要比直接callback差一些,但在现在的机器性能条件下问题可以忽略。你不看象java, dotnet等虚拟机都可以运行的很好,这种signal/slot的开支要比它们少很多。
http://nzt.spaces.live.com
离线igoo
只看该作者 4楼 发表于: 2006-07-26
引用第2楼cemond2006-07-21 13:00发表的“”:
我是在一个单独的线程中发出信号来让主窗体中的控件响应,例如用一个线程来循环接收来自网络的消息,接收到消息后通知窗口控件显示接收的内容,由于发送的数据量特别大,故效率就成了很大的问题,我试着用了QThread的postevent和slot-signal方式实现,效果都不是很明显,所以看看用函数指针能不能行 ,欢迎大家来讨论一下.



slot-signal似乎有一定的风险的,你问题的本质是工作线程和界面线程
的交互问题,一般都用message来做
也就是sendmessage,postmessage之类的(在qt里面可能是postevent,忘了 :))

具体slot-signal的局限和风险在哪里,请参照c++ gui qt3编程那本书

不过那本书里面说新版的qt(qt4)会解决该问题,我也没有去查资料

离线cemond
只看该作者 5楼 发表于: 2006-07-28
谢谢各位。
离线cemond
只看该作者 6楼 发表于: 2006-07-28
igoo,就你所理解的工作线程与界面线程的交互有什么可以建议的吗?谢谢。
快速回复
限100 字节
 
上一个 下一个