线程的基本概念

2014-09-25 19:20:49   最后更新: 2014-09-25 19:20:49   访问数量:889




典型的UNIX进程可以看做只有一个控制线程,即一个进程同一时刻只做一件事

如果进程拥有多个控制线程,则在同一时刻各个线程可以处理各自独立的任务

优势

  1. 简化编程
  2. 多进程实现内存和文件描述符共享需要使用操作系统提供的复杂机制,而多个线程则自动的共享地址空间和描述符
  3. 有些问题中将问题分解可以有效改善程序的吞吐量
  4. 多线程可以将交互与其他部分分开,有效利用等待的时间片

进程包含了表示进程内执行环境的必要信息,其中包含进程中线程的线程ID、一组寄存器的值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程私有数据,进程的所有信息对所有线程都是共享的,包括程序文本、全局内存和堆内存、栈以及文件描述符

和每个进程都有一个进程ID一样,每个线程也有自己的唯一标识,系统中的每个进程的ID都是不同的,同一进程中的线程ID也是不同的,但是不同进程的线程ID可能相同

进程使用一个整数作为ID(pid_t类型),而线程则使用一个结构体 pthread_t 类型作为 ID

 

比较两个线程ID

int pthread_equal(pthread_t tid1, pthread_t tid2);

 

定义于 pthread.h 中

若参数中的两个线程ID相同则返回非0值,否则返回0

 

获取自身的线程ID

pthread_t pthread_self();

 

定义于 pthread.h 中

 

一般来说,pthread_equal 与 pthread_self 两个函数是一起使用的

进程的主线程常常把新的工作放到工作队列中,由各个线程去工作队列中取出工作并执行,但是线程只应该处理主线程分配给他的工作,于是线程去对比控制线程放在工作中的线程ID去判断是否应该去处理

 






读书笔记      操作系统      os      linux      unix      龙潭书斋      apue      unix环境高级编程      进程      线程      thread      pthread_t      pthread_self      pthread_equal     


京ICP备15018585号