社区
C语言
帖子详情
如何理解"代码"和"线程"的关系?
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
打赏
举报
回复
看看操作系统概论之类的书吧,基础需要弥补
什么是
线
程死锁?如何避免死锁?
1. 什么是
线
程死锁
线
程死锁描述的是这样一种情况:多个
线
程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于
线
程被无限期地阻塞,因此程序不可能正常终止。 如下图所示,
线
程 A 持有资源 2,
线
程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个
线
程就会互相等待而进入死锁状态。 下面的
代码
模拟了上图的死锁的情况 public class DeadLockDemo { private static Object resource1 = new Object();//资源 1
如何实现
线
程安全?
如何实现
线
程安全? 1.对于
线
程不安全的对象我们可以通过如下方法来实现
线
程安全: 1: 加锁 利用Synchronized或者ReenTrantLock来对不安全对象进行加锁,来实现
线
程执行的串行化,从而保证多
线
程同时操作对象的安全性,一个是语法层面的互斥锁,一个是API层面的互斥锁. 2: 非阻塞同步来实现
线
程安全。原理就是:通俗点讲,就是先进性操作,如果没有其他
线
程争用共享数据,那操作就成功了...
什么是多
线
程竞争?
线
程是非独立的,同一个进程里
线
程是数据共享的,当各个
线
程访问数据资源时会出现竞争状态即: 数据几乎同步会被多个
线
程占用,造成数据混乱 ,即所谓的
线
程不安全那么怎么解决多
线
程竞争问题?-- 锁 锁的好处:确保了某段关键
代码
(共享数据资源)只能由一个
线
程从头到尾完整地执行能解决多
线
程资源竞争下 的原子操作问题。 锁的坏处:阻止了多
线
程并发执行,包含锁的某段
代码
实际上只能以单
线
程模式...
线
程与进程,你真得
理解
了吗
相信大家面试时一定没少被一个问题刁难,那就是进程和
线
程的区别是什么?这个问题延申开来并不像表面那么简单,今天就来深入一探。 开始前先看一组非常传神的图例,相信可以帮助你更好
理解
进程与
线
程的概念: 1 进程与
线
程的
关系
和区别 什么是进程 进程可以说是一个“执行中的程序”。程序是指令、数据及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。 进程有哪些特征? 进程依赖于程序运行而存在,进程是动态的,程序是静态的; 进程是操作系统进行
【
线
程】
线
程(Thread)是什么?怎么
理解
线
程?进程和
线
程的
关系
、进程和
线
程的区别。
线
程(Thread)是什么?怎么
理解
线
程?进程和
线
程的
关系
、进程和
线
程的区别。
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章