我的关于进程与函数的理解

绿豆蛙2013 2009-03-06 10:18:47
加精
比如这样一个程序
main()
{
X()//函数
}
执行过程是main执行到X函数,则主程序把控制权交给X()函数,执行X()函数,当X()函数执行完之后再把控制权交给主程序。主程序继续执行。
而如果是
main()
{
AfxBeginThread(X())//线程
}
执行过程是main执行到X()线程,主程序并不把控制权交给X()线程,只有当主程序执行完之后才把控制权交给线程。线程开始执行。


——————————
有种说法是,函数与主程序可以看作是串行关系,而线程和主程序可以看作是并行关系。照上面这样一个程序来说,线程与进程也是一种串行关系啊?怎么能说是并行关系呢?谢谢
...全文
3339 86 打赏 收藏 转发到动态 举报
写回复
用AI写文章
86 条回复
切换为时间正序
请发表友善的回复…
发表回复
liz2033 2012-07-27
  • 打赏
  • 举报
回复
正解,不过我已经知道了
StonesHeart 2012-03-22
  • 打赏
  • 举报
回复
额,不错。
cxfenfei66 2011-04-28
  • 打赏
  • 举报
回复
基础的东西才是最重要的。。。
zsm0614050125 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 lauxp 的回复:]
思维逻辑混乱到这种地步,我看你不要写程序了,转行
[/Quote]

你咋那么。。。。。无语。。。。
zhongruanjian 2009-12-27
  • 打赏
  • 举报
回复
虽然还不是很明白,但是也比以前的理解更深入了些,希望下次再看的时候会更深入。
moonkiller2008 2009-03-16
  • 打赏
  • 举报
回复

public static void main(String[] args) {
try {
Thread.sleep(300000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
......
}

主程序在子线程休眠5分钟后才开始运行子线程后面的程序
seamoon88 2009-03-16
  • 打赏
  • 举报
回复
学习
seasir123 2009-03-16
  • 打赏
  • 举报
回复
鱼龙混杂
anrong669 2009-03-16
  • 打赏
  • 举报
回复
单核是分时处理,一个线成活的一个时间偏,main()中的x函数属于main()线呈,而main()种创建线程的的函数
创建了一个单独的线程,他和main()是并行的
sophy520eangel 2009-03-16
  • 打赏
  • 举报
回复
我的理解 第2个应该是同步的,主线和扩展线的关系......
sophy520eangel 2009-03-16
  • 打赏
  • 举报
回复
我的理解 第2个应该是同步的,主线和扩展线的关系......
tutu08 2009-03-15
  • 打赏
  • 举报
回复
学习了
还是不太懂
sundebing 2009-03-15
  • 打赏
  • 举报
回复
除非是多核的,不然windows就是串行的,只是看起来像并行,主线程只有在空闲的时候才会把时间片给子线程
cnzdgs 2009-03-15
  • 打赏
  • 举报
回复
函数与进程、线程不是同类概念,也没有所谓的串行、并行的关系。
打个比方:我们可以把一台电脑看作一个生产作坊,每个工人看作一个处理器,每个程序看作一项产品的生产过程,把每个进程看作生产一个产品的具体过程,每个线程看作生产一个产品部件的具体过程,每个函数看作生产一种产品部件的某个环节。如果作坊只有一个工人就是单核系统,如果作坊可以同时进行多个产品的生产则是多任务系统,如果一个工人可以同时生产多个部件则是多任务处理器。同一种产品生产多个就是把一个程序运行多次,多个产品同时生产则是多进程,多个部件同时生产则是多线程。生产一个部件如果需要某个环节则是调用某个函数,需要经过多个相同的环节则是多次调用某函数。有可能生产多个部件都需要同一个环节,也就是同一个函数可能被多个线程调用。如果某个部件的某个环节需要参照另一部件的某个环节的结果来处理,则需要同步,如果某个环节在同一时间只能对一个部件进行则为互斥。某个部件生产到中途时,可以让工人歇一下,也可以让工人去做其它事,也可以取消该部件的生产。如果生产过程中出现异常问题,可能需要对部件做些修补,也可能丢弃该部件重新生产,严重时可能整个作坊都乱掉了,必须重新整顿,所以要完善各项规章制度,至少要把各个产品的生产活动独立开,以免一项产品出现问题时影响整个作坊。
xiaogao123 2009-03-15
  • 打赏
  • 举报
回复
看起来好复杂 我还是新手呢
靓仔辛 2009-03-15
  • 打赏
  • 举报
回复
懂了
fuxiaowei 2009-03-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 codewarrior 的回复:]
宏观上并行(一段时间内,有多个线程、进程在运行)
微观上,单核系统上是串行。
唯有多核才可能真正并行。
[/Quote]
是这样的
yxq281426250 2009-03-15
  • 打赏
  • 举报
回复
当然如果我们在主线程中将主线程挂起,等待子线程执行完毕后通知主线程,主线程才继续执行下去。
yxq281426250 2009-03-15
  • 打赏
  • 举报
回复
进程只是资源和数据的集合,代码的执行是在线程中进行的。默认情况下会有一个主线程之行main中的代码,如果我们在main中创建子线程之行其他操作的话,主线程和子线程是并行之行的,不知道这样说对不对...
woduniniang 2009-03-15
  • 打赏
  • 举报
回复
学习学习
加载更多回复(65)

15,471

社区成员

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

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