社区
C#
帖子详情
关于线程同时运行的本质
杨友山
领域专家: 后端开发技术领域
2012-05-14 04:47:56
多线程号称能使多个任务同时运行,但是我记得这个多线程本质实际是分片段执行而已。
那么现在所谓双核CPU是否真的能让多个线程同时执行呢?比如一个核开一个?
...全文
142
7
打赏
收藏
关于线程同时运行的本质
多线程号称能使多个任务同时运行,但是我记得这个多线程本质实际是分片段执行而已。 那么现在所谓双核CPU是否真的能让多个线程同时执行呢?比如一个核开一个?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zslllj
2012-05-14
打赏
举报
回复
那我做一个实验是向数据库中插入数据的,别人用多线程同时插入明显快很多,这是为什么呢,按道理,时间应该是一样的啊
NewUser2008
2012-05-14
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
线程是CPU调度的最小执行单位。如果你学过操作系统,就会知道Thread Context(线程上下文),它是一个结构体,而且对应的就是CPU的状态(CPU各个寄存器的值)。
对于单处理器来说,线程是并发的,但是它们轮流被调度给CPU。所谓“并发”,就是有可能在线程没有执行完之前,CPU切换到另一个线程。
对于多处理器来说,线程是并行的。它们可以被同时执行。稍微有点不同的是超线程处理器,……
[/Quote]
不过是相对来说
threenewbee
2012-05-14
打赏
举报
回复
线程是CPU调度的最小执行单位。如果你学过操作系统,就会知道Thread Context(线程上下文),它是一个结构体,而且对应的就是CPU的状态(CPU各个寄存器的值)。
对于单处理器来说,线程是并发的,但是它们轮流被调度给CPU。所谓“并发”,就是有可能在线程没有执行完之前,CPU切换到另一个线程。
对于多处理器来说,线程是并行的。它们可以被同时执行。稍微有点不同的是超线程处理器,它虽然被视作是并行的,但是其实内部处理并行的方式是通过延迟隐藏。这使得它并不真的像多处理器并行一样会遇到读写存储器的冲突,因此调试程序的时候,它不能完全反映并行环境可能遇到的问题。
杨友山
2012-05-14
打赏
举报
回复
我也记得当年老师讲的时候就是说是分时间段执行的。
cheng2005
2012-05-14
打赏
举报
回复
多线程的本质是要把不想关的事情分开执行
A();
B();
在同一个线程中,B就要等A做完了才可以做,如果A和B没有关联,那么B为什么要等A做完呢,完全可以跟A并行的做啊。所以就有了多线程,多线程其实是操作系统的概念。
五更琉璃
2012-05-14
打赏
举报
回复
这个......至少C#不能指定哪个核运行哪个线程
bdmh
2012-05-14
打赏
举报
回复
根本就不是同时执行,除非你的cpu数量多于线程数量
cpu会分配不同的时间片给不同的线程,所以感觉上是在同时执行
JAVA:多
线程
是几个
线程
同时
运行
还是随机交替
运行
多
线程
也分
线程
的优先级,并不是随机的。cpu是分时间片给每个
线程
去
运行
的。这样才能做到雨露均沾,由于时间片很短,会给我们几个
线程
同时
运行
的错觉。当然几个
线程
同时
运行
也可以的,那就需要多核的cpu。 ...
Java多
线程
系列—
线程
的
运行
机制(02)
线程
的
运行
机制 在这一节我们主要学习一下
线程
的启动,
线程
的停止以及
线程
的状态流转
线程
的启动 start 方法和 run 方法 这个其实是一个非常老生常谈的问题了,就是说我们只有调用start 方法才会帮我们启动一个
线程
,如果你是直接调用run 方法的话,那其实就是同步调用。 public class StartRight { public static void main(String[] args) { Thread t1 = new Thread(() -> {
多
线程
(一):创建
线程
和
线程
的常用方法
一:为什么要学多
线程
应付面试 :多
线程
几乎是面试中必问的题,所以掌握一定的基础知识是必须的。 了解并发编程:实际工作中很少写多
线程
的代码,这部分代码一般都被人封装起来了,在业务中使用多
线程
的机会也不是很多(看具体项目),但是作为一个高级程序员如果不会多
线程
是说不过去的。 二:进程与
线程
进程 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序
运行
时系统...
Java— 齐头并进完成任务—多
线程
感知多
线程
Java是少数的几种支持“多
线程
”的语言之一。大多数的程序语言只能循序
运行
单独的一个程序块,无法同时
运行
不同的多个程序块。Java的“多
线程
”恰可弥补这个缺憾,它可以让不同的程序块并发执行,如此一来就可让程序
运行
得更为顺畅,同时也可达到多任务处理的目的。 现实生活中的多
线程
任何抽象的理论(
本质
)都离不开具体的现象。通过现象比较容易看清楚
本质
,在没有讲解Java的多
线程
概念之前,我们先从现实生活中体会一下“多
线程
”。 在高速公路收费匝道上,经常会看到排成长龙的车队。如果让你来缓解这一拥塞的交通状
python多
线程
代码
运行
速度更慢-原因解析
写出了正确的多
线程
代码,
运行
速度反而比单
线程
慢很多,原来是由于GIL(Global Interpreter Lock)! GIL 是Cpython(Python语言的主流解释器)特有的全局解释器锁(其他解释器因为有自己的
线程
调度机制,所以没有GIL机制),GIL锁定Python
线程
中的CPU执行资源。
线程
在执行代码时,必须先获得这把锁,才获得CPU执行代码指令。如果这把锁被其他
线程
占用,该
线程
就只...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章