主线程与子线程关系

科比布莱恩特 2012-07-13 04:07:23
朋友,win32主线程起一个子线程去发消息,消息函数里执行的是一些操作,那我消息函数里执行的操作算是主线程里执行还是子线程里执行?
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贪玩的老鼠 2012-07-14
  • 打赏
  • 举报
回复
要看你消息接收的对象是运行在主线程还是子线程。
hsfeng9 2012-07-14
  • 打赏
  • 举报
回复
LZ,你工作几年转行的呢?我现在在找转行的工作,又是新城市,纠结得要命了。
unituniverse2 2012-07-14
  • 打赏
  • 举报
回复
-消息永远是创建消息循环的线程在执行。换句话说处理消息的线程永远只有一个,而且始终为创建消息循环的线程。
-每个线程可以没有或者仅有一个消息队列。虽然消息函数可以嵌套并再次创建内循环,但是消息队列,每个线程始终最多只有一个。
-如果有另一个线程向消息循环所在线程发送消息时有消息正被处理,那么该消息会被阻塞直到消息循环队列中的当前消息处理完为止。同样,如果线程正在处理其它线程发来的消息,当前队列中属于本线程和别的线程发送的消息都会被阻塞直到完成处理。发送的消息都是被插队到队列最前端处理的。
-如果用post类的消息函数,消息都是被添加到消息队列末端的,而且不会阻塞投递方(这里不用“发送”)的执行。但是相应的,当消息被真正执行时,往往post函数却有可能早就已经返回并正在执行其它的什么代码。如果投递的时候接受方消息队列已满,则投递失败。本次投递的消息则永远都不会被处理到。
-消息处理线程很有限的可以得知自己处理的是不是本线程发出的消息。但是却不可能做到让其它线程来处理消息,即使是想让发送本条消息的线程(这里的线程不是“本线程”)来处理也不行。
科比布莱恩特 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
PostThreadMessage给主线程的话就是主线程在执行。
[/Quote]

那我这个属于哪一种?
ningfc1024 2012-07-13
  • 打赏
  • 举报
回复
PostThreadMessage给主线程的话就是主线程在执行。
  • 打赏
  • 举报
回复
你这个概念要搞清了
线程有两种:
1、界面线程,能接消息的
2、工作线程,不能接消息

每个界面线程都有自己独立的消息循环。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧