协程,纤程,超线程

来源:互联网 发布:java实现base64加密 编辑:程序博客网 时间:2024/05/19 12:15

        协程(coroutine)是一种程序组件。

        协程源自 Simula 和 Modula-2 语言,但也有其他语言支持。协程更适合于用来实现彼此熟悉的程序组件,如合作式多任务,迭代器,无限列表和管道。

        协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用

        一个程序可以包含多个协程,协程相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。

        纤程(fiber)

       在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber切换至另一合作纤程,以实现合作纤程之间的协同.

线程是在Windows内核中实现的,纤程是在用户模式下实现的,内核对纤程一无所知,内核会根据我们定义的算法来对纤程进行调度。
纤程是微软公司提出的轻量级线程的概念,一个纤程拥有自己的栈和寄存器状态。一个线程可以包含多个纤程,和线程由操作系统调度有所不同的是,线程内纤程的调度完全由程序员自己控制,操作系统的内核完全不会知道纤程的存在。在.NET架构中,线程的概念不一定和操作系统的线程对应,在有些情况下.NET中的线程对应一个纤程。
参考链接: http://book.51cto.com/art/200812/99969.htm  7.1.3 什么是纤程 - 51CTO.COM
超线程(Hyper-Threading)
在一个实体处理器中,提供两个逻辑线程。
利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行速度。


0 0
原创粉丝点击