关于线程同时运行的本质

杨友山
领域专家: 后端开发技术领域
2012-05-14 04:47:56
多线程号称能使多个任务同时运行,但是我记得这个多线程本质实际是分片段执行而已。

那么现在所谓双核CPU是否真的能让多个线程同时执行呢?比如一个核开一个?
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用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会分配不同的时间片给不同的线程,所以感觉上是在同时执行

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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