线程是进程的一部分, 通常我们所说的最小的可执行单位,那么线程要能执行需要哪些?
当前指令位置指针(通常称为计数器或PC), 栈顶指针(SP),通用寄存器,浮点或地址寄存器。
线程是进程的进化版,是一种减负的进程,系统在线程间切换要比在进程间切换块很多,这很大程度上得益于线程间共享地址空间,包括代码段,数据段,堆栈。
创建一个进程一般需要4g的内存,创建一个线程只需要在这4g内存中的10M左右, 进程间进行同步变成需要进行复杂的进程间的通信,而线程则是共享这些的,可以之间使用,需要注意的是对临界区的控制。
编译的时候如果直接用GCC编辑的要链接上pthread库, 加上-lpthread即可.
pthread_equal 比较两个线程ID是否表示同一个线程, 如果是则返回不为0,否则返回 0, 线程ID没有大小顺序之分。
detach(分离)一个线程并不会对线程造成任何影响, 它只是提醒系统当这个线程结束的时候回收它的资源。这种情况是因为大部分进程的寿命比线程的长, 当线程寿终正寝的时候的, 它会保留着自己的虚拟内存, 堆栈信息,所以需要分离它,来告诉系统,如果其它进程或者线程需要资源可以把它分配出去。
在C语言中, 一般要执行一个程序的入口都是main函数, 在线程中这个流程被称为初始线程或主线程。