如何理解"代码"和"线程"的关系?

Mr.Chronos 2007-04-24 11:35:20
小弟不才,一直不能很好理解这两者该如何理解,如何把两者联系起来?
谢谢~~
...全文
336 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr.Chronos 2007-04-24
  • 打赏
  • 举报
回复
楼上的讲的似乎有些笼统,如果是非线程的代码呢?比如就是一个简单的程序代码,它和线程有什么联系呢?
jixingzhong 2007-04-24
  • 打赏
  • 举报
回复
你可以编写一段 多线程的代码

这段代码运行后会生成多个 线程 ~
ouyh12345 2007-04-24
  • 打赏
  • 举报
回复
这两者相差太大了吧。
Mr.Chronos 2007-04-24
  • 打赏
  • 举报
回复
A_B_C_ABC(黄瓜@YouCanDoIt)似乎说出了我想要的答案,碰巧查到了这方面的资料,贴出来大家看看:
进程是不活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中线程的代码。为此,每个线程都有它自己的一组CPU寄存器和它自己的堆栈。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。如果没有线程来执行进程的地址空间中的代码,那么进程就没有存在的理由了,系统就将自动撤消该进程和它的地址空间。

0黄瓜0 2007-04-24
  • 打赏
  • 举报
回复
只要你写出int main}{},编译运行就会产生一个线程,执行这段代码. 而这个线程可以产生多个其它的线程,但需要你代码中显式调用CreateThread形式的函数. 如果代码没有显式调用创建线程的函数,则只有一个主线程.
Mr.Chronos 2007-04-24
  • 打赏
  • 举报
回复
楼上各位讲的都很好,特别是bomdy(昏昏欲睡的虫子),那段比喻相当贴切.但是似乎更多的重点是去讲操作系统中线程的概念.或许是我的表述不清楚吧~或者是我的理解错误吧~~.
或者这样讲吧,什么样的代码产生什么的线程,二者之间又有怎样的影响?
bomdy 2007-04-24
  • 打赏
  • 举报
回复 1
有一条铁路,上面有分叉(条件分支),有绕圈(循环),铁路由铁轨、枕木、基石构成(代码指令)。

铁路是死的,只有火车在上面跑起来才发生作用。

火车(线程)顺着铁路(指令序列)运行,当前跑到的地方就是线程当前执行点,火车轮压着的那条铁轨就相当于线程当前正执行的指令。

铁路上可以跑多辆火车(多线程),跑同一路线的火车要按时间调度,进出车站(访问公用资源,如同一内存区)要排队(线程访问互斥),否则火车就要相撞(线程冲突)。

火车暂时停运可以叫"挂起",重新运行叫"唤醒",不过不同的是暂停在路上的线程不会像火车那样阻挡其它火车(线程)的运行,但不能堵在站台(临界资源)上,否则就有可能"死锁"。
intuition444 2007-04-24
  • 打赏
  • 举报
回复
任何一个应用,运行的时候都会生成一个进程在内存执行,同时,这个进程也是主线程。
todototry 2007-04-24
  • 打赏
  • 举报
回复
线程用来执行那些代码
sirguan 2007-04-24
  • 打赏
  • 举报
回复
看看操作系统概论之类的书吧,基础需要弥补

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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