一个有意思的问题(关于SendMessage)

来源:互联网 发布:sql 删除临时表 编辑:程序博客网 时间:2024/04/29 08:09

     前几天面试,面试官出了一个简单的问题,PostMessage和SendMessage有什么区别。自然不在话下,答之。但随后出了一个有意思的问题,既然SendMessage是等待消息响应后才返回,那如果消息响应函数内自己再调用自己,会是什么情况?会不会死在那里了?

    傻眼了,呵呵。以前从来没想过这种情况。只是知道SendMessage怎么用就满足了,所以很多事情只知道其然不知其所以然。确实是对自己要求太低了。回来自己写了一个简单的小程序,试验了一下。结果很有意思,竟然提示堆栈溢出,程序崩溃了。后来自己仔细想想,也就明白了原因。原来发送消息之后,消息先是到了消息队列中,然后由系统进行调度执行。由于不停的往消息队列里塞消息,所以把队列塞爆了。弄明白了之后,对消息也就有了更深的理解。看来,好多时候不能只满足于怎么用,还要多想想,这样才能真正的学好。