MFC 多线程 socket通信 怎样从主线程进入其他线程
这几天在学MFC的网络编程,程序是怎样从主线程进入我们新建的线程的呢?我不知道这其中的原理,哪位能把这个过程大概说一下吗?在网上看了个例子,它有线程创建,也有线程的入口,...
这几天在学MFC的网络编程,程序是怎样从主线程进 入我们新建的线程的呢?我不知道这其中的原理,哪位能把这个过程大概说一下吗?
在网上看了个例子,它有线程创建,也有线程的入口,但是,它怎样进入这个线程的呢?
如果是纯C++的代码,它只要在主程序那里,调用一下sleeep()就可以开始其他线程,但是MFC的主线程应该是winmani吧,这个也没有在它里面做任何处理啊,为什么能够进入其他线程呢??? 展开
在网上看了个例子,它有线程创建,也有线程的入口,但是,它怎样进入这个线程的呢?
如果是纯C++的代码,它只要在主程序那里,调用一下sleeep()就可以开始其他线程,但是MFC的主线程应该是winmani吧,这个也没有在它里面做任何处理啊,为什么能够进入其他线程呢??? 展开
2个回答
展开全部
推荐你看一下《win32核心编程》这本书。win编程和dos概念是不同的,主要就在于线程、消息和窗口的概念,这三个概念不能很好的理解,编程会始终处于迷糊状态。
线程首先是“CPU时间片分配”概念,是和主进程“并发”同时进行的。
创建并“抛出”线程后,两者同时执行,如果没有waitingforsingleobject之类的语句,两个线程之间互不干扰。所以不是“一根线”的概念,没有怎么进入一说。
线程首先是“CPU时间片分配”概念,是和主进程“并发”同时进行的。
创建并“抛出”线程后,两者同时执行,如果没有waitingforsingleobject之类的语句,两个线程之间互不干扰。所以不是“一根线”的概念,没有怎么进入一说。
更多追问追答
追问
我是个初学者,只是了解一些皮毛
上面你说的,创建并“抛出”,这个“抛出”指的是什么?那个MFC程序里面没有有用到waitingforsingleobject之类的语句
追答
WaitForSingleObject是有的。
这样的基础问题,不适合在这里提问和讲解,如果我复制几大篇文章过来,也没有什么意义,强烈推荐你认真看一本win编程书籍,了解基础概念。
展开全部
太过于纠结细节了,每个进程的不同线程之间的调度是由操作系统来完成的,你是看不到的,系统为每个线程分配一定的时间片,当发生线程切换时,保存当前的线程上下文并切换到其它的线程。
当创建一个线程的时候,CreateThread或beginthread在内部已创建好线程运行所需的一切,在那里等待时间片的到来.
sleep的时候切换线程是因为主动放弃了时间片,为节约资源这时候系统就切换到其它的线程运行。
建议看windows程序设计第五版,windows核心编程,windows多线程程序设计.
像楼下说的,线程之间是并发的(多CPU,或多核心可并行). 这么底层的东西,都是系统来调度,你只用处理上层的逻辑就可以了
当创建一个线程的时候,CreateThread或beginthread在内部已创建好线程运行所需的一切,在那里等待时间片的到来.
sleep的时候切换线程是因为主动放弃了时间片,为节约资源这时候系统就切换到其它的线程运行。
建议看windows程序设计第五版,windows核心编程,windows多线程程序设计.
像楼下说的,线程之间是并发的(多CPU,或多核心可并行). 这么底层的东西,都是系统来调度,你只用处理上层的逻辑就可以了
追问
谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询