社区
C#
帖子详情
关于线程的一些理论知识
qq_20501829
2017-11-24 02:58:23
在一个c#程序里,我想开4条线程同时做一件事情,但是因为线程会存在CPU切换,所以达不到真正意义上的"同时工作"
那么我开4个程序,不开线程,这样的效果能达到"同时工作"吗?
...全文
199
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范例大全 源码
《Java范例大全》内容丰富、结构清晰,所选实例具有很强的实用性和针对性,不仅是为中初级Java开发者量身定做,而且还非常适合作为高级Java开发者的案头必备参考书。这是一本关于Java开发的大百科全书,以知识点为脉络,以实例(200多个实例贯穿全书)为主要内容,深入阐述了Java开发的各种方法和技巧,权威性毋庸置疑。首先,全书以Java开发环境搭建开篇,循序渐进地介绍了Java语法的方方面面,不仅包括变量、语句、字符串、数组、类、集合、面向对象等必备的基础语法,而且还涵盖异常处理与反射机制、I/O文件操作、
线程
、数据库操作等高级语法;其次,《Java范例大全》还讲解了XML开发、Java图形编程、Java网络编程、多媒体开发、邮件开发、Java Web开发和Java安全等大量极其重要的企业级开发知识,使全书上升到一个新的高度;最后,以一个极具代表性的综合实例结束全书,实现理论与实践完美结合。
Java 面经手册·小傅哥.pdf
这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等。 适合人群 1. 具备一定编程基础,工作1-3年的研发人员 2. 想阅读 Java 核心源码,但总感觉看不懂的 3. 看了太多理论,但没有实践验证的 4. 求职面试,总被面试题搞的死去活来的
Qt高级系列之8:Qt多
线程
线程
池数据同步机制及文件下载器项目实战
1.带领您深入学习QT5/C++:Qt多
线程
线程
池及数据同步机制 ,多
线程
文件下载器项目实战,继承自QThread,继承自QObject,QRunnable和QThreadPool,QtConcurrent,Qt多
线程
技术与数据加锁保护机制:QMutex,QSemaphore,QReadWriteLock,QWaitCondition;Qt
线程
池技术、Qt数据库连接池、等。2.所有章节均有
理论知识
介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法(可以下载所有的电子课件与源码)。
线程
与进程
理论知识
入门(一)
基础概念 什么是进程和
线程
? 进程:进程是程序运行资源分配的最小单位 其中包括:CPU、内存空间、磁盘IO等,同一条进程中的多条
线程
共享该进程的全部系统资源,进程与进程之间是相互独立的。
线程
:
线程
是CPU调度的最小单位,必须依赖于进程而存在
线程
是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的、能独立运行的基本单位。
线程
基本不拥有系统资源,只拥有一点在虚拟机栈的内存。 CPU核心数和
线程
数关系 多核心:指单芯片多处理器,就是将多个并行的处理器集成到同一个芯片内,各个处理器执行
【多
线程
】多
线程
基础知识
Runnable 接口时
线程
辅助类,仅定义了一个 fun() 方法。该方法中描述了要实现的
线程
的内容。
C#
110,545
社区成员
642,580
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章