初步讲解Unix 线程知识
创始人
2024-06-28 20:11:25
0

今天我们来学习下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 消息队列

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...