初步讲解Unix 线程知识

系统 其他OS
文章中,我们会为大家介绍下Unix 线程的知识。Unix 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.

今天我们来学习下Unix 线程的知识。首先我们来了解下什么是Unix 线程呢?Unix 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个Unix 线程可以创建和撤销另一个Unix 线程;同一个进程中的多个Unix 线程之间可以并发执行。

在Unix 中,一个进程让另外实体进行某项事务而采取的操作为fork的一个子进程,子进程只是将父进程的数据区拷贝一份到自己的数据区。在符合POSIX标准的Unix 操作系统下,同一个进程的Unix 线程之间共享进程指令、大多数数据(线程私有数据除外)、信号处理方式、进程运行环境等。由于线程共享进程的全局变量,因此可以采用用户自己编写的消息队列来实现数据的共享。

建立多任务模型,并用Unix 线程来实现

符合POSIX标准的UNIX操作系统提供了Unix 线程的控制函数,如:Unix 线程的创建和终止、线程之间的互斥、线程之间的同步等。利用这些系统函数可以成功地模拟消息队列,来实现线程间数据共享和同步,以完成多任务的实时性。为成功地描述线程间数据共享和同步,以下列任务模型为例。

首先建立消息队列属性数据结构
 

  1. #define MAXQUEUE 30   
  2. typedef struct mq_attrib {   
  3. char name[20];   
  4. pthread_mutex_t mutex_buff;   
  5. pthread_mutex_t mutex_cond;   
  6. pthread cond_t cond;   
  7. int maxElements;   
  8. int elementLength;   
  9. int curElementNum;   
  10. caddr_t buff;   
  11. }mq_attrib,mq_attribstruct,mq_attrib_t;   
  12. mq_attrib_t msqueue[MAXQUEUE];  

数据结构定义了消息队列的名字name,最大消息个数maxElements,单个消息长度elementLength,当前消息个数curElementNum,存放消息的缓冲区buff,保护缓冲区锁mutex_buff,线程同步条件变量cond,保护线程同步条件变量锁mutex_cond。

一些基本的Unix 线程的知识,我们这次就介绍到这里,我们以后会有更多的Unix 线程的知识的介绍的,请大家继续关注。

【编辑推荐】

  1. 讲解Unix内核超级块知识
  2. 知识讲堂Unix内核教学
  3. 浅析Unix内核索引结点表
  4. Unix内核与Linux内核大比拼
  5. 知识讲解Unix 消息队列
责任编辑:小霞
相关推荐

2010-05-05 13:13:55

Unix内核

2010-05-04 09:22:10

Unix文件

2010-05-04 12:25:28

Unix链接

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-04-30 13:38:51

Unix at命令

2010-04-21 15:20:31

Unix线程

2010-05-04 16:33:39

Unix系统

2010-05-05 10:44:37

Unix 反引号

2010-05-05 15:02:39

Unix系统

2010-04-30 18:20:23

Unix系统

2010-05-04 09:45:28

Unix系统

2010-04-21 12:39:48

Unix 消息队列

2010-05-05 13:22:29

Unix Shell

2010-04-13 17:52:16

Unix交换区

2010-04-30 01:28:59

Unix系统

2010-04-29 13:30:20

Unix操作系统

2010-05-06 17:03:49

Unix命令

2010-05-06 14:24:56

Unix系统交换区

2010-04-21 13:47:45

Unix内核
点赞
收藏

51CTO技术栈公众号