同步异步
From http://en.wikipedia.org/wiki/Thread_(computing)
In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by an operating system scheduler. A thread is a light-weight process. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process. Multiple threads can exist within the same process and share resources such as memory, while different processes do not share these resources. In particular, the threads of a process share the latter's instructions (its code) and its context (the values that its variables reference at any given moment).
On a single processor, multithreading generally occurs by time-division multiplexing (as inmultitasking): the processor switches between different threads. This context switching generally happens frequently enough that the user perceives the threads or tasks as running at the same time. On amultiprocessor or multi-core system, threads can be truly concurrent, with every processor or core executing a separate thread simultaneously.
Many modern operating systems directly support both time-sliced and multiprocessor threading with a process scheduler. The kernel of an operating system allows programmers to manipulate threads via thesystem call interface. Some implementations are called a kernel thread, whereas a lightweight process(LWP) is a specific type of kernel thread that shares the same state and information.
转载于http://blog.csdn.net/a_snail/article/details/1491790
同步
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床 后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般 而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是
SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的
LRESULT值返回给调用者。
异步
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
以CAsycSocket类为例(注意,CSocket从CAsyncSocket派生,但是起功能已经由异步转化为同步),当一个客户端通过调用
Connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。
这里
提到执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。
转载于http://blog.csdn.net/lizhiguo0532/article/details/6117818
进程并发运行的环境中,多个进程之间存在如下竞争和合作的关系:
-
当并发进程竞争使用同一个资源时,它们之间就会发生冲突。为了避免冲突,当一个进程获得资源时,另一个进程必须等待。这种情况需要通过互斥机制来解决。
-
一个进程等待另一个进程的执行,并以另一个进程的执行结果作为本进程的执行条件,就形成了同步机制
-
进程间还可以通过通信进行合作,同性提供了同步和协调各种活动的方法。如操作系统提供的通信功能。
进程间通过共享的竞争:
特点:
1.
2.
3.
相互间产生的影响:
竞争引发的控制问题:
与并发相关的术语:
临界资源:一次只能允许一个进程访问的资源
临界区:访问和操作临界资源的代码段
互斥:多个进程需要访问一个临界资源时,任何时刻只能有一个进程正在访问;通俗点,资
源需要排它使用,防止出现竞争冲突(不同时使用,但无先后次序)。
同步:指两个事件的发生存在着某种时序上的先后关系。
死锁:一组进程中,每个进程都无限等待改组进程中另一进程所占有的临界资源
饥饿:一组进程中,某个或者某些进程无限等待改组中其他进程所占有的临界资源
转载于http://blog.csdn.net/zevin/article/details/8779009