Chinaunix首页 | 论坛 | 博客
  • 博客访问: 815098
  • 博文数量: 157
  • 博客积分: 542
  • 博客等级: 中士
  • 技术积分: 1696
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-21 20:21
文章分类
文章存档

2017年(1)

2016年(2)

2015年(6)

2014年(42)

2013年(77)

2012年(19)

2011年(10)

分类: C/C++

2013-08-15 15:57:01

线程是进程的一部分, 通常我们所说的最小的可执行单位,那么线程要能执行需要哪些?

当前指令位置指针(通常称为计数器或PC), 栈顶指针(SP),通用寄存器,浮点或地址寄存器。

线程是进程的进化版,是一种减负的进程,系统在线程间切换要比在进程间切换块很多,这很大程度上得益于线程间共享地址空间,包括代码段,数据段,堆栈。

创建一个进程一般需要4g的内存,创建一个线程只需要在这4g内存中的10M左右, 进程间进行同步变成需要进行复杂的进程间的通信,而线程则是共享这些的,可以之间使用,需要注意的是对临界区的控制。 


编译的时候如果直接用GCC编辑的要链接上pthread库, 加上-lpthread即可.   

pthread_equal 比较两个线程ID是否表示同一个线程, 如果是则返回不为0,否则返回 0, 线程ID没有大小顺序之分。
                  
detach(分离)一个线程并不会对线程造成任何影响, 它只是提醒系统当这个线程结束的时候回收它的资源。这种情况是因为大部分进程的寿命比线程的长, 当线程寿终正寝的时候的, 它会保留着自己的虚拟内存, 堆栈信息,所以需要分离它,来告诉系统,如果其它进程或者线程需要资源可以把它分配出去。               

在C语言中, 一般要执行一个程序的入口都是main函数, 在线程中这个流程被称为初始线程或主线程。               
阅读(565) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~