Skip to content

Instantly share code, notes, and snippets.

View datonli's full-sized avatar

Datong Li datonli

View GitHub Profile

N久之前, 某两人为了linux的调度基本单元是进程还是线程争得面红耳赤, 当然, 且不论为了一个技术问题不顾体面其用心何在, 单纯从技术角度讲, 这是个挺好的问题.

单纯的下一个结论几乎总是错误的, 所谓的对与错也只不过是在特定的时段和特定的场景下符合规律的一种状态, 一旦时过境迁, 对的东西往往变成了错误的, 而错误的东西又会变成对的.所以我建议在这里不要使用"对"或是"错"来判定事务, 只能说是在当前的情况下, 从UUU角度看XXX更显得更"符合实际".

我们都知道linux是不断发展的.在早期版本中, linux的基本调度单元是Task, 只到现在, 依然是它.

在早期版本中, 一个Task对应着一个进程, 完全没有线程这个概念. 随着时间的发展, 线程的概念出现的, 但是linux并没有马上接受这一概念, 要知道, 线程是现代操作系统的特征, 向一个现有的操作系统内核引入线程是一件伤筋动骨的事情, 更何况在线程概念的早期, 受历史原因(UNIX)和硬件的限制(多核尚不是主流), 线程的地位尚不确定. 所以, linux并没有在内核中引入线程的概念.

但是, linux提供了一个新的系统调用clone, 通过该系统调用, 内核中的多个进程可以共享一些信息, 比如进程空间等. 注意, 此时linux内核的基础调度单元依然是Task, 而且在内核看来, 一个进程依然对应着一个Task.

@friendzis
friendzis / TimePlot.py
Created May 7, 2014 11:19
Simple implementation of TimeAxisItem and test program
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from PySide.QtCore import QTime, QTimer
from collections import deque
t = QTime()
t.start()
data = deque(maxlen=20)