MFC 多线程 socket通信 怎样从主线程进入其他线程

这几天在学MFC的网络编程,程序是怎样从主线程进入我们新建的线程的呢?我不知道这其中的原理,哪位能把这个过程大概说一下吗?在网上看了个例子,它有线程创建,也有线程的入口,... 这几天在学MFC的网络编程,程序是怎样从主线程进 入我们新建的线程的呢?我不知道这其中的原理,哪位能把这个过程大概说一下吗?
在网上看了个例子,它有线程创建,也有线程的入口,但是,它怎样进入这个线程的呢?
如果是纯C++的代码,它只要在主程序那里,调用一下sleeep()就可以开始其他线程,但是MFC的主线程应该是winmani吧,这个也没有在它里面做任何处理啊,为什么能够进入其他线程呢???
展开
 我来答
bhtzu
2013-01-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4252万
展开全部
推荐你看一下《win32核心编程》这本书。win编程和dos概念是不同的,主要就在于线程、消息和窗口的概念,这三个概念不能很好的理解,编程会始终处于迷糊状态。
线程首先是“CPU时间片分配”概念,是和主进程“并发”同时进行的。
创建并“抛出”线程后,两者同时执行,如果没有waitingforsingleobject之类的语句,两个线程之间互不干扰。所以不是“一根线”的概念,没有怎么进入一说。
更多追问追答
追问
我是个初学者,只是了解一些皮毛
上面你说的,创建并“抛出”,这个“抛出”指的是什么?那个MFC程序里面没有有用到waitingforsingleobject之类的语句
追答
WaitForSingleObject是有的。
这样的基础问题,不适合在这里提问和讲解,如果我复制几大篇文章过来,也没有什么意义,强烈推荐你认真看一本win编程书籍,了解基础概念。
wurandexin
2013-01-22 · TA获得超过539个赞
知道小有建树答主
回答量:499
采纳率:100%
帮助的人:320万
展开全部
太过于纠结细节了,每个进程的不同线程之间的调度是由操作系统来完成的,你是看不到的,系统为每个线程分配一定的时间片,当发生线程切换时,保存当前的线程上下文并切换到其它的线程。

当创建一个线程的时候,CreateThread或beginthread在内部已创建好线程运行所需的一切,在那里等待时间片的到来.
sleep的时候切换线程是因为主动放弃了时间片,为节约资源这时候系统就切换到其它的线程运行。
建议看windows程序设计第五版,windows核心编程,windows多线程程序设计.

像楼下说的,线程之间是并发的(多CPU,或多核心可并行). 这么底层的东西,都是系统来调度,你只用处理上层的逻辑就可以了
追问
谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式