关于线程的一些理论知识

qq_20501829 2017-11-24 02:58:23
在一个c#程序里,我想开4条线程同时做一件事情,但是因为线程会存在CPU切换,所以达不到真正意义上的"同时工作"

那么我开4个程序,不开线程,这样的效果能达到"同时工作"吗?

...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_20501829 2017-11-24
  • 打赏
  • 举报
回复
看了各位的回复,受益匪浅,那可以得出一个结论,只能开4台电脑然后分别开一个程序执行,这样就能达到"同时工作",在同一台机器,不管用什么方法,也达不到所谓的"同时工作",由于本人的举例水平有限,无法说出遇到的问题
xuzuning 2017-11-24
  • 打赏
  • 举报
回复
一心不二用,任何时刻一个CPU只能做一件事情 对于进程调度 Unix 采用时分多路架构 Widows 采用消息循环架构 线程本是 Widows 的专利,现在 Unix 也引用了他的概念 进程有消息循环,而线程没有消息循环。也就是线程不能独立运行 多核CPU 的核,在一般情况下是并联运行的。除非有单独的程序指派,多核与单核没有区别 低档多核CPU中,每两个核共用一个高速闪存,这本身就制约同时运行的能力 为操控多核CPU 的核,.NET 特别引入了并行的概念(Parallel) 从某种意义上说,实现了同时运行的目的
exception92 2017-11-24
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
所以达不到真正意义上的"同时工作" -》 你怎么验证得到这个结论的?
四个程序就是四个进程,进程会包含线程,开发过程中用到的线程其实就是windows中的线程,这样才能由windows的cpu来管理。线程的运行我觉得很复杂,一个线程的sleep,就会导致新的线程创建。因为线程的挂起会阻塞主线程,这就让操作系统认为任务没有完成,需要再创建额外的线程继续上次的操作。 很难进行“同时”执行,因为我们根本无法控制”上下文“的切换,你不确定在什么时候就会进行一次”上下文“切换。即使是使用并行来执行,也很难达到同时,因为所谓的并行也是尽可能的并行执行。 PS:个人观点,欢迎指正。
秋的红果实 2017-11-24
  • 打赏
  • 举报
回复
4个程序,其实是4个进程;最终到了CPU那里,还是串联执行,而不是并联执行,达不到你说的”同时“效果 4个.NET的线程,我认为.NET在虚拟机上转为操作系统的进程了,而不是操作系统的”线程“;也达不到你说的同时 windows内部的线程、进程其实对我们是模糊的,这些概念多出自我们曾经学过的教材,而这些教材,都是以Unix为基础的 调度是操作系统的事,正如P大侠说的,调度的意义主要是为了减少CPU的空闲时间,在管理器里,你要注意的话,专门有个管理空闲的进程,名字记不清了
exception92 2017-11-24
  • 打赏
  • 举报
回复
所以达不到真正意义上的"同时工作" -》 你怎么验证得到这个结论的?
  • 打赏
  • 举报
回复
打开你的 windws 系统进程管理器查看“性能->CPU”,你可以看到有多少进程、线程。比如说我的这里现在就有130个进程1400个线程。你说这“同时工作”? 操作系统基本知识是,计算机CPU、外设等等经常有空闲,因此需要分时使用它们、需要多线程调度操作,才能提高使用率。纠结有多少CPU核心数,是不正确的,以为就算是40年前的计算机也还是要考虑几十个进程、甚至几百个线程编程的,这并不是因为40年前的电脑都有几十个CPU的原因。
mk_lucifer 2017-11-24
  • 打赏
  • 举报
回复
一个超人顶100个凡人。。。一个超人同时干100凡人干的事也会比100个凡人先完成,在操作系统下的程序就不要操心操作系统是怎么干的,想关心从计算机基础学期,瞎猜并没有啥卵用。。。
mk_lucifer 2017-11-24
  • 打赏
  • 举报
回复
什么叫同时工作??? 8个工人可以同时干八件事,1个人即吃鸡翅又吃鸡腿也叫同时干两件事,谁然一次只能吃一种,不耽误他同时吃完。。。4核8线程CPU的同时工作线程最大上限是8个,这是硬件决定的。。。而进程是受MMU限制的,CPU哪怕又100个线程的CPU内核但公用一个MMU,决定只能映射一个虚拟地址表,那么同时只能运行一个进程。。。 不要纠结这种问题,即使分时执行的线程在逻辑上认为是同时执行毫无问题。。。

110,533

社区成员

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

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

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