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

网站动画用什么程序做/舆情监测软件

网站动画用什么程序做,舆情监测软件,外贸平台都有哪些,顺的网站建设信息文章目录一、程序、进程、线程二、 进程VS线程三、为什么引入线程线程带来的好处线程带来的坏处有四、相关函数五、示例程序一、程序、进程、线程 程序:程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中进程:是程序运…

文章目录

  • 一、程序、进程、线程
  • 二、 进程VS线程
  • 三、为什么引入线程
    • 线程带来的好处
    • 线程带来的坏处有
  • 四、相关函数
  • 五、示例程序

一、程序、进程、线程

在这里插入图片描述

  • 程序:程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中
  • 进程:是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中
  • 线程:是进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者最小的执行单元

二、 进程VS线程

我们打开一个聊天软件,这就是开启了一个进程
当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置…,这些操作就是线程
所以可以说 “进程” 包含 “线程”, “线程” 是 “进程” 的子集

  1. 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
  2. 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源(寄存器、堆栈、上下文)。
  3. 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
  4. 私有属性:线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志。

三、为什么引入线程

  • 进程之间是相互独立的,比如我们使用fork其子进程与父进程代码段是共享,不过数据段、堆栈段等非共享,不可相互访问。
  • 对于进程之间数据独立,所以需要通过管道、消息队列等等机制来完成信息交换,这样相对比较浪费时间,且操作麻烦,而线程之间是共享的,所以线程之间的数据交互并不需要像进程之间那么复杂就可以完成交互,比如直接访问变量。
  • 同时在进程切换的过程中需要维护自己的页表项,即重新映射虚拟地址与物理地址等,而线程之间的切换则不需要更新页表项等,开销就大大降低,同时仿佛的进程切换对于CPU缓存也是不友好的,影响程序执行效率。

线程带来的好处

  • 一个进程中可以同时存在多个线程
  • 让进程具备多任务并行处理能力
  • 同进程下的各个线程之间可以共享进程资源 (同进程内的多线程通信十分简单高效)
  • 更轻量与高效

线程带来的坏处有

  • 因为进程资源共享,所以会产生资源竞争,需要通过锁机制来协同
  • 当进程中的一个线程奔溃时,会导致其所属进程的所有线程奔溃(一般游戏的用户设计不会采用多线程方式)

四、相关函数

1. pthread_create**原型**
#include <pthread.h>           
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
**功能**凡是使用pthread_create注册的线程,都是次线程,次线程会和主线程一起并发运行。
谁是主线程?main函数的那条线就是主线程,如果一个次线程都没有创建的话,整个进程就只有一个主线程,这个主线程也是整个进程。
**参数**thread:存放线程的TID。attr:用于设置线程属性,设置线程属性的目的是为了实现某些特殊功能,如果设置为NULL,表示不设置特有的属性,使用线程默认属性所提供的功能即可。正常情况下,线程默认属性所提供的功能就已经够用了,所以这个参数我们都是设置为NULL。start_routine:要注册为线程的函数地址
函数类型为void *(*) (void *),pthread_create它会把这个函数注册为线程,如果不注册,线程函数就是一个普通的函数。
线程函数需要我们自己定义,比如:void *pth_fun(void *pth_arg){...//线程要做的事情}pth_fun和pth_arg的命名由自己决定。arg:传递给线程函数的参数,这个参数会传递给pth_arg,如果参数很多的话,我们做成一个结构体,然后把结构体变量的地址传过去。如果你不想传递参数的话,你可以设置为NULL**返回值**成功返回0,失败返回非零错误号。1. pthread_cancel**原型**#include <pthread.h>                 int pthread_cancel(pthread_t thread); 
**功能**当次线程是死循环时,可以调动这个函数主动取消次线程。
**参数**thread:要取消线程的TID返回值成功返回0,失败返回非零错误号。

五、示例程序

void print_fn(const char* s) {pid_t pid;pthread_t tid;pid = getpid();//进程idtid = pthread_self();//线程idprintf("%s pid %u ,and tid %u\n", s, (unsigned int)pid, (unsigned int)tid);
}void* new_pthread(void* arg) {print_fn("I am a new pthread: ");return NULL;
}//一个进程 多个线程
void pthreadtest()
{pthread_t tid;int err;err = pthread_create(&tid, NULL, new_pthread, NULL);if (err != 0){printf("occurs error while create new pthread: %s\n", strerror(err));}     print_fn("Main thread: ");pthread_join(tid, NULL); //阻塞等待tid为thread的次线程结束
}
http://www.lbrq.cn/news/931735.html

相关文章:

  • 网站开发概要设计/深圳营销推广公司
  • pc网站怎么做自适应/广东seo推广
  • mooc 网站建设情况/seo是什么姓
  • ps做网站效果图都是按几倍做/个人建网站步骤
  • 网站建设需要什么软件/seo搜索引擎优化课程总结
  • 赣州网站制作找哪家好/网络服务提供者不是网络运营者
  • 有域名了怎么做网站/企业软文范例
  • 怎么做网站详情页/宁波seo在线优化哪家好
  • 宁波网站建设制作订做/常州网站建设
  • 个人怎么做网站页面/seo单页快速排名
  • 网站设计师要求/武汉seo哪家好
  • 济南网站制作费用/亚马逊开店流程及费用
  • wap网站开发价格/软件推广
  • 深圳商城网站制作公司/seo百度推广
  • 兰州网站运营/工具
  • 县城购物网站/搜图片百度识图
  • 网站设计需求表/昆明百度推广优化
  • 手机在线做ppt模板下载网站有哪些/最近一周新闻大事摘抄
  • 国内wordpress有名的网站/百度搜索网站
  • 浙江专业网页设计免费建站/有哪些平台可以做推广
  • 建筑设计案例网站/互联网营销师培训教材
  • 如何破解网站后台网址/网络营销有哪些就业岗位
  • 广州网站优化服务/中国目前最好的搜索引擎
  • 计算机专业毕业设计怎么做/windows优化大师免费
  • 网页设计教程详细步骤/seo课程培训入门
  • php做网站好学吗/职业技能培训网上平台
  • 网站空间去哪买/2345网址导航大全
  • 网站等级保护必须做吗/nba最快的绝杀
  • 有了源码怎么做网站/广州网站推广软件
  • wordpress企业主题二次开发下载/seo如何优化图片
  • Go语言新手村:轻松理解变量、常量和枚举用法
  • 坚鹏:AI智能体培训是知行学成为AI智能体创新应用引领者的基础
  • [机缘参悟-237]:AI人工神经网络与人类的神经网络工作原理的相似性
  • Ettus USRP X410/X440 运行 ADC 自校准
  • 云原生作业(haproxy)
  • 【数据架构09】人工智能及数据智能架构篇