当前位置: 首页 > news >正文

网站建设锚点链接网页设计html代码大全

网站建设锚点链接,网页设计html代码大全,日照移动网站建设,wordpress 绑定两个域名6.1 线程概念 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。 所以,线程是轻量级的进程(LWP:light weight …

6.1 线程概念

在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。

所以,线程是轻量级的进程(LWP:light weight process),在Linux环境下线程的本质仍是进程。

为了让进程完成一定的工作,进程必须至少包含一个线程。

进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是CPU分配资源的最小单位

线程存在与进程当中(进程可以认为是线程的容器),是操作系统调度执行的最小单位。说通俗点,线程就是干活的。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

如果说进程是一个资源管家,负责从主人那里要资源的话,那么线程就是干活的苦力。一个管家必须完成一项工作,就需要最少一个苦力,也就是说,一个进程最少包含一个线程,也可以包含多个线程。苦力要干活,就需要依托于管家,所以说一个线程,必须属于某一个进程。

进程有自己的地址空间,线程使用进程的地址空间,也就是说,进程里的资源,线程都是有权访问的,比如说堆啊,栈啊,静态存储区什么的。

进程是操作系统分配资源的最小单位

线程是操作系统调度的最小单位

6.2 线程函数列表安装

命令:

sudo apt-get install manpages-posix-dev

【说明】manpages-posix-dev 包含 POSIX 的 header files 和 library calls 的用法

查看:

man -k pthread

6.3 NPTL

当 Linux 最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads 项目使用这个调用来完全在用户空间模拟对线程的支持。不幸的是,这种方法有一些缺点,尤其是在信号处理、调度和进程间同步原语方面都存在问题。另外,这个线程模型也不符合 POSIX 的要求。

要改进 LinuxThreads,非常明显我们需要内核的支持,并且需要重写线程库。有两个相互竞争的项目开始来满足这些要求。一个包括 IBM 的开发人员的团队开展了 NGPT(Next-Generation POSIX Threads)项目。同时,Red Hat 的一些开发人员开展了 NPTL 项目。NGPT 在 2003 年中期被放弃了,把这个领域完全留给了 NPTL。

NPTL,或称为 Native POSIX Thread Library,是 Linux 线程的一个新实现,它克服了 LinuxThreads 的缺点,同时也符合 POSIX 的需求。与 LinuxThreads 相比,它在性能和稳定性方面都提供了重大的改进。

查看当前pthread库版本:getconf GNU_LIBPTHREAD_VERSION

6.4 线程的特点

类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。

因此在这类系统中,进程和线程关系密切:

1) 线程是轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone

2) 从内核里看进程和线程是一样的,都有各自不同的PCB.

3) 进程可以蜕变成线程

4) 在linux下,线程最是小的执行单位;进程是最小的分配资源单位

查看指定进程的LWP号:

ps  -Lf  pid

实际上,无论是创建进程的fork,还是创建线程的pthread_create,底层实现都是调用同一个内核函数 clone 。

Ø 如果复制对方的地址空间,那么就产出一个“进程”;

Ø 如果共享对方的地址空间,就产生一个“线程”。

Linux内核是不区分进程和线程的, 只在用户层面上进行区分。所以,线程所有操作函数 pthread_* 是库函数,而非系统调用。

6.5 线程共享资源

1) 文件描述符表

2) 每种信号的处理方式

3) 当前工作目录

4) 用户ID和组ID

内存地址空间 (.text/.data/.bss/heap/共享库)

6.6 线程非共享资源

1) 线程id

2) 处理器现场和栈指针(内核栈)

3) 独立的栈空间(用户空间栈)

4) errno变量

5) 信号屏蔽字

6) 调度优先级

6.7 线程的优缺点

优点:

Ø 提高程序并发性

Ø 开销小

Ø 数据通信、共享数据方便

缺点:

Ø 库函数,不稳定

Ø 调试、编写困难、gdb不支持

Ø 对信号支持不好

优点相对突出,缺点均不是硬伤。Linux下由于实现方法导致进程、线程差别不是很大。

07. 线程常用操作

7.1 线程号

就像每个进程都有一个进程号一样,每个线程也有一个线程号。进程号在整个系统中是唯一的,但线程号不同,线程号只在它所属的进程环境中有效。

进程号用 pid_t 数据类型表示,是一个非负整数。线程号则用 pthread_t 数据类型来表示,Linux 使用无符号长整数表示。

有的系统在实现pthread_t 的时候,用一个结构体来表示,所以在可移植的操作系统实现不能把它做为整数处理。

pthread_self函数:


int main()
{pthread_t thread_id;
​thread_id = pthread_self(); // 返回调用线程的线程IDprintf("Thread ID = %lu \n", thread_id);
​if (0 != pthread_equal(thread_id, pthread_self())){printf("Equal!\n");}else{printf("Not equal!\n");}
​return 0;
}

7.2 线程的创建

pthread_create函数:

在一个线程中调用pthread_create()创建新的线程后,当前线程从pthread_create()返回继续往下执行,而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。

由于pthread_create的错误码不保存在errno中,因此不能直接用perror()打印错误信息,可以先用strerror()把错误码转换成错误信息再打印。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>// 回调函数
void *thread_fun(void * arg)
{sleep(1);int num = *((int *)arg);printf("int the new thread: num = %d\n", num);
​return NULL;
}
​
int main()
{pthread_t tid;int test = 100;
​// 返回错误号int ret = pthread_create(&tid, NULL, thread_fun, (void *)&test);if (ret != 0){printf("error number: %d\n", ret);// 根据错误号打印错误信息printf("error information: %s\n", strerror(ret));}
​while (1);
​return 0;
}

【注意】线程函数的程序在 pthread 库中,故链接时要加上参数 -lpthread。

http://www.lbrq.cn/news/2587033.html

相关文章:

  • 怎样做违法网站怎样在百度上免费建网站
  • 二次开发怎么弄seo有名气的优化公司
  • 建立网站和小程序需要多少钱落实20条优化措施
  • 网站的建设要多少钱永久免费域名申请
  • 公司建设网站网络营销推广公司名称
  • 辛集专业网站建设济南优化网页
  • 只做app不做网站可以吗seo优化的主要内容
  • wordpress导航页seo优化按天扣费
  • 如何介绍自己做的网站哈尔滨百度网络推广
  • 常州网站建设cz352345手机浏览器
  • 长沙做营销型网站公司百度商城官网
  • 网站改版方案原则如何做网页推广
  • wordpress可以自定义模型吗seo数据分析哪些方面
  • 北京营销型网站建设公司湖北疫情最新消息
  • ui设计做app网站要学什么河南seo技术教程
  • 做域名代理网站广告推广公司
  • 万网域名查询工具长沙官网seo服务
  • 个人网站建设的计划书百度关键词搜索排行
  • 有的网页打不开是怎么回事淘宝关键词优化
  • html5和css3制作个人网站源码百度下载软件
  • 养殖企业网站模板广告联盟自动挂机赚钱
  • 做菠菜网站代理犯法吗企业网络推广技巧
  • 百浪科技做网站怎么样做百度推广销售怎么找客户
  • 泉州网站建设公司推荐乐清网站建设
  • 通州网站建设公司属性词 关键词 核心词
  • 谷谷互联建的网站如何把qq在线郑州百度推广seo
  • 哈尔滨做网站哪家好强什么叫seo网络推广
  • 国家疫情最新政策优化网站哪个好
  • win2012做网站济南seo外贸网站建设
  • 企业信息的网站广告点击一次多少钱
  • 3.JVM,JRE和JDK的关系是什么
  • Linux84 SHELL编程:流程控制 前瞻(1)
  • JVM学习专题(四)对象创建过程
  • 9.感知机、神经网络
  • 源代码本地安装funasr
  • GitLab 代码管理平台部署及使用