2、早期的计算机只具有一个中央处理器(CPU)并且是单核(只有一个运算器)的,这种情况下计算机 *** 作系统采用并发技术实现并发运行,具体做法是采用“ 时间片轮询进程调度算法”,它的思想简单介绍如下: 在冲虚 *** 作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断毁衫地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU及CPU的运算器。
3、现阶段许多计算机具有多个中央处理器或一个处理器具有多个运算器(多核),情况就不同了,如果进程数小于CPU或运算纤判腔器数,则不同的进程可以分配给不同的CPU或运算器来运行,这样,各个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU或运算器数,则仍然需要使用并发技术。
4、有些 *** 作系统并不支持多个CPU或多核CPU,如 ms winodws 9x、3.x,这样的 *** 作系统多个CPU、或多核CPU对它们来说是无用的。
1、并发,在 *** 作系统中,是指一个时间段中有几个程序都处于已棚裤启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处世散理机上运行链返简。2、在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQLServer使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。
在多线程程序中经常使用并发、并行,同步掘宴困、异步这两组概念,那么下面说一下我所理解的这两组概念的联系与区别。
并发 指两个或两个以上的事件在同一时间段内发生(注意:
这里指的时间段是在微观上看,所以它很短,我们感觉不出来事件发生的时间差)。
并发意味着应用程序同时在多个任务上取得进展。那么,如果计算机只有一个CPU,应用程序可能不会同时完成多个任务,但在应用程序的某个时间内正在处理多个任务。它不能完全完成一个任务,然后再开始下一个任务。
并行 指两个或两个以上的事件在同一时刻发生。
并行意味着应用程序拆分成更小的子任务,这些任务可以并行处理,例如在多CPU在同一时间。
如上,并发性与应用程序处理多个任务的方式有关。应用程序可以在某个时间(顺序地)处理一个任务,或者同时处理多个任务。
另一方面,并行性与应用程序如何处理每个单独的任务有关。一个应用程序可以处理连祥举续的任务从开始到结束,或将任务分解成子任务可以并行完成。
并发可认为是一种逻辑结构的设计模式。你可以用并发的设计方式去设计模型,然后运行在一个单核系统上,通过系统动态地逻辑切换制造出并行的假象。此时,你的程序不是并行,但是是并发的。你可以将这种模型不加修改地运行在多核系统上,此时你的程序可以认为是并行。而并行则更关注的是程序的执行。
串行 指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个。
同步
串行是同步线程实现的方式。一个任务执行完成后才能执行下一个任务,单线程只能执行一个任务。
异步 就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。
并发和并行其实是异步线程实现的两种形式。并行其实是真正的异步,多核CUP可以同时开启多条线程供多个任务同时执行,互补干扰。但是并发就不一样了,是一个伪异步判念。在单核CUP中只能有一条线程,但是又想执行多个任务。这个时候,只能在一条线程上不停的切换任务。
同步和异步是在多任务的情况下,这是前提。其次,同步和异步是指逻辑调用方式。同步的前一个逻辑调用的输出作为第二个逻辑调用的输入,后一个逻辑调用必须等待前一个调用执行完才能开始调起执行。正好与同步相反,后一个逻辑调用无需等待前一个逻辑调用执行完毕。也就是说前一个逻辑调用发起后就直接返回了,并没有输出,而是在调用执行完成后通过状态、通知来通知调用者,或通过回调函数处理这个调用。
本文摘录了一下网上相关内容以及自己的一些理解,有问题请留言,谢谢啦!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)