社区
C#
帖子详情
关于线程的一些理论知识
qq_20501829
2017-11-24 02:58:23
在一个c#程序里,我想开4条线程同时做一件事情,但是因为线程会存在CPU切换,所以达不到真正意义上的"同时工作"
那么我开4个程序,不开线程,这样的效果能达到"同时工作"吗?
...全文
198
8
打赏
收藏
关于线程的一些理论知识
在一个c#程序里,我想开4条线程同时做一件事情,但是因为线程会存在CPU切换,所以达不到真正意义上的"同时工作" 那么我开4个程序,不开线程,这样的效果能达到"同时工作"吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
所以达不到真正意义上的"同时工作" -》 你怎么验证得到这个结论的?
以专业开发人员为伍
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,决定只能映射一个虚拟地址表,那么同时只能运行一个进程。。。 不要纠结这种问题,即使分时执行的线程在逻辑上认为是同时执行毫无问题。。。
Java 面经手册·小傅哥.pdf
当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等。 适合人群 1. 具备一定编程基础,工作1-3年的研发...
线程
与进程
理论知识
入门(一)
什么是进程和
线程
? 进程:进程是程序运行资源分配的最小单位 其中包括:CPU、内存空间、磁盘IO等,同一条进程中的多条
线程
共享该进程的全部系统资源,进程与进程之间是相互独立的。
线程
:
线程
是CPU调度的最小...
Qt高级系列之8:Qt多
线程
线程
池数据同步机制及文件下载器项目实战
1.带领您深入学习QT5/C++:Qt多
线程
线程
池及数据同步机制 ,多...2.所有章节均有
理论知识
介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法(可以下载所有的电子课件与源码)。
【多
线程
】多
线程
基础知识
Runnable 接口时
线程
辅助类,仅定义了一个 fun() 方法。该方法中描述了要实现的
线程
的内容。
C#
线程
的基础知识
线程
的创建 1、ThreadStart委托的使用 Thread th1 = new Thread(MyThread.ThreadMethod); MyThread obj = new MyThread(); Thread th2 = new Thread(new ThreadStart(obj.ThreadMethod)); 2、
线程
的启动、...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章