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

济南品牌网站建设公司网站功能板块

济南品牌网站建设公司,网站功能板块,网页制作用什么软件比较好,超市设计网站POSIX线程库 与线程有关的函数构成了⼀个完整的系列&#xff0c;绝⼤多数函数的名字都是以“pthread_”打头的要使⽤这些函数库&#xff0c;要通过引入头文件<pthread.h>链接这些线程函数库时要使⽤编译器命令的“-lpthread”选项 eg: g -o $ $^ -lpthread这个pthread库…

POSIX线程库

  • 与线程有关的函数构成了⼀个完整的系列,绝⼤多数函数的名字都是以“pthread_”打头的
  • 要使⽤这些函数库,要通过引入头文件<pthread.h>
  • 链接这些线程函数库时要使⽤编译器命令的“-lpthread”选项   eg: g++ -o $@ $^ -lpthread
  • 这个pthread库是linux自带的原生线程库 , C++11也有线程<thread>库,在Linux上本质就是封装了<pthread>库,
  • C++11 的 <thread>库 是跨平台的,在 Windows 上可能封装 CreateThread,在 macOS 上封装 pthread,在 Linux 上通常封装 pthread

创建线程

功能:创建⼀个新的线程
原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *
(*start_routine)(void*), void *arg);参数:输出型参数thread:返回线程IDattr:设置线程的属性,attr为NULL表⽰使⽤默认属性start_routine:是个函数地址,线程启动后要执⾏的函数arg:传给线程启动函数的参数返回值:成功返回0;失败返回错误码(错误码一般大于0)

vfork已经基本被废除了

在linux内核看来 ,只有LWP ,所以向外只提供了clone一种系统调用, 通过封装clone, fork可以创建子进程 ,pthread_creat可以创建线程.

但是在Windows内核下,提供了创建进程的syscall 和创建线程的syscall (因为windos中确实单独实现了线程 和进程) linux下只有LWP

错误检查:

  • 传统的⼀些函数是,成功返回0,失败返回-1,并且对全局变量errno赋值以指⽰错误。
  • pthreads函数出错时不会设置全局变量errno(⽽⼤部分其他POSIX函数会这样做)。⽽是将错误代码通过返回值返回
  • pthreads同样也提供了线程内的errno变量,以⽀持其它使⽤errno的代码。对于pthreads函数的错误,建议通过返回值l来判定,因为读取返回值要⽐读取线程内的errno变量的开销更⼩

创建一个线程

#include<iostream>
#include<pthread.h>
#include<unistd.h>
#include<string>void* routine (void* args)
{//static_cast 是 C++ 中的 静态类型转换运算符,用于在 编译时 进行类型检查的显式转换。它比 C 风格的强制转换 (type)value 更安全//使用方法:static_cast<目标类型>(表达式)std::string name = static_cast<const char *>(args);// 将 args(某种类型)显式转换为 const char *,并用它构造一个 std::string 对象 namewhile(true){std::cout<<"我是子线程 我的名字是 "<<name<<std::endl;sleep(1);}return 0;
}int main()
{pthread_t tid;int n =pthread_create(&tid ,nullptr ,routine,(void*)"thread-1");if(n!=0 ){std::cout<<"creat thread error"<<std::endl;return 1;}while(true){std::cout<<"我是main线程 "<<std::endl;sleep(1);}return 0;
}

每个线程都有自己的ID ,在创建时就以第一个参数形式输出了,也可以使用函数pthread_self( ) 获取自己线程的ID

两个线程同时访问同一个公共资源有可能引发错误(像显示器打印,在不加保护的情况下,显示器也是公共资源)下面可以看到打印错乱,就是这个原因,就是我们以前讲的重入.

我们可以看到main线程和子线程的ID不同

总结:

  • 新线程和main线程谁先运行 ,不确定
  • 线程要瓜分进程的资源,包括时间片
  • 不加保护的情况下 ,显示器文件就是公共资源
  • 对于多线程代码 ,进程内的函数 ,被所有线程共享,只要这个函数不使用全局变量(显示器文件就是全局变量),就是安全的
  • 全局变量能被此进程中的全部线程看到
  • 一旦一个线程出现异常,进程就崩了(被信号杀死了),其它线程也就全崩了  例如:一个线程中使用了野指针 ,查页表时失败了,MMU报错 ,导致CPU触发软中断 ,OS发送信号杀死进程.
  • 线程创建后也是要被等待和回收的(主线程像父进程一样一定是最后退出的)

等待进程

http://www.dtcms.com/wzjs/583484.html

相关文章:

  • 网站建设教程信赖湖南岚鸿点 赞做h5动画网站
  • 创建网站超链接分销系统模式
  • 做设计网站关键词推广效果分析
  • 110平米三室一厅简装图片seo学院
  • 快速网站排名wordpress猜你喜欢插件
  • 设计师做私单网站的做网站公司
  • 移动网站建设公司wordpress画廊怎么用
  • 营销型网站建设评价个人网站备案怎么写
  • 中石油网站建设建站之星模板下载网站
  • 上海长宁网站建设淘宝商城网站建设
  • 企业管理信息系统网站Wordpress需要什么基础
  • 网站建设设计制作维护wordpress 强制登录
  • 男女明星直接做的视频网站网站如何做超链接
  • 网上提供免费主页空间的网站动易学校网站系统
  • 网站打开速度慢 如何优化钢板防护罩做网站
  • 二维码生成器网站源码网络科技有限公司属于什么行业
  • 株洲网站建设 李html5 公司网站模板
  • 斗鱼网站开发是用什么语言wordpress主题404
  • 电影网站备案佛山市建网站做网站费用
  • 渭南做网站怎么开网店不用自己发货囤货的
  • 郑州市二七区建设局网站友情链接多久有效果
  • 一级a做爰片免费网站 视频沙井网站优化
  • 网站建设工作 方案网站建设与实践模板
  • 在线动画手机网站模板下载没有网站如何做SEO推广有用吗
  • 网络设计用什么软件搜索引擎优化的主要特征
  • 互联网个人用户网站网络营销方案例文
  • 开源手机网站模板浏阳网站开发
  • 南京高端网站制作公司哪家好上传文件生成链接下载
  • 成都网站建设推广详情phpcms网站模版下载
  • 重庆网站建站网站开发发展方向