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

荣成市信用建设网站html5新增标签有哪些

荣成市信用建设网站,html5新增标签有哪些,餐饮网站欣赏,dw网页制作实训总结目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在… 目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在学习多线程之前我们首先要搞清楚进程与线程的区别。 1.1 进程的概念 进程是操作系统进行资源分配的基本单位。每个进程都有一个唯一的标识符PID用于操作系统在管理和调度进程时进行标识和区分。操作系统可以根据一定的调度算法来分配CPU时间片给不同的进程从而实现多任务并发执行。在Linux中一个进程的创建实际上伴随着进程控制块PCB或task_struct进程地址空间以及页表的创建。 1.2 线程的概念 在一个程序里的一个执行路线就叫做线程thread。更准确的定义是线程是“一个进程内部的控制序列”。线程是操作系统进行任务调度的基本单位。 要知道Linux并不存在真正意义上的线程。线程比进程往往是多对一的即一切进程至少都有一个执行线程 线程在进程内部运行本质是在进程地址空间内运行的 如果Linux实现真的线程那么就需要对这些线程进行管理。比如说创建线程、终止线程、调度线程、切换线程、给线程分配资源、释放资源以及回收资源等等搞一套与进程类似的线程管理模块整个难度就比较大。线程并没有独立的虚拟地址空间只是在进程虚拟地址空间中拥有相对独立的一块空间 1.3 线程的优点 线程的粒度小于进程不论是创建、切换还是占用资源线程要付出的代价都更少因此通常多线程比多进程并发性更高。在等待慢速I/O操作结束的同时程序可执行其他的计算任务。计算密集型应用为了能在多处理器系统上运行将计算分解到多个线程中实现。I/O密集型应用为了提高性能将I/O操作重叠。线程可以同时等待不同的I/O操作。 1.4 线程的缺点 性能损失         一个很少被外部事件阻塞的计算密集型线程往往无法与共它线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多那么可能会有较大的性能损失这里的性能损失指的是增加了额外的同步和调度开销而可用的资源不变。 健壮性降低         编写多线程需要更全面更深入的考虑在一个多线程程序里因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的换句话说线程之间是缺乏保护的。比如进程之间是相互独立的我们打开各种软件一个软件的崩溃并不会影响其他软件变相的也就增加了进程的健壮性而线程就不同了因为大部分资源都是共享的一个线程的崩溃就会导致其他所有线程崩溃进而导致整个进程崩溃 缺乏访问控制         进程是访问控制的基本粒度在一个线程中调用某些OS函数会对整个进程造成影响。 编程难度提高         编写与调试一个多线程程序比单线程程序困难得多。 1.5 线程异常 单个线程如果出现除零野指针问题导致线程崩溃进程也会随着崩溃。线程是进程的执行分支线程出异常就类似进程出异常进而触发信号机制终止进程进程终止该进程内的所有线程也就随即退出。 1.6 线程用途 合理的使用多线程能提高CPU密集型程序的执行效率。合理的使用多线程能提高IO密集型程序的用户体验如生活中我们一边写代码一边下载开发工具就是多线程运行的一种表现。 二、线程控制 2.1 POSIX线程库 与线程有关的函数构成了一个完整的系列绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库要通过引入头文pthread.h链接这些线程函数库时要使用编译器命令的“-lpthread”选项 2.2 创建一个新的线程 参数 thread返回线程IDattr设置线程的属性attr为NULL表示使用默认属性start_routine是个函数地址线程启动后要执行的函数arg传给线程启动函数的参数返回值成功返回0失败返回错误码 错误检查 传统的一些函数是成功返回0失败返回-1并且对全局变量errno赋值以指示错误。pthreads函数出错时不会设置全局变量errno而大部分其他POSIX函数会这样做。而是将错误代码通过返回值返回。pthreads同样也提供了线程内的errno变量以支持其它使用errno的代码。对于pthreads函数的错误 建议通过返回值判定因为读取返回值要比读取线程内的errno变量的开销更小。 下面尝试使用一段代码创建线程 #includeiostream #includepthread.h #includeunistd.h using namespace std; void* thread_func(void* args) {while(true){cout new thread running... endl;sleep(1);} } int main() {pthread_t t;pthread_create(t,nullptr,thread_func,nullptr);while(true){coutmain thread is running...endl;sleep(1);}return 0; } 运行结果  此时我们可以用一个Linux命令查找进程并输出相关信息ps -aL  可以看到它们的PID是相同的因为它们属于同一个进程而LWP指的是轻量级进程IDLinux中没有线程而是叫做轻量级进程。 2.3 线程ID及进程地址空间布局 pthread_ create函数会产生一个线程ID存放在第一个参数指向的地址中。该线程ID和前面说的线程ID不是一回事。 前面讲的线程ID属于进程调度的范畴。因为线程是轻量级进程是操作系统调度器的最小单位所以需要一个数值来唯一表示该线程。 pthread_create函数第一个参数指向一个虚拟内存单元该内存单元的地址即为新创建线程的线程ID属于NPTL线程库的范畴。线程库的后续操作就是根据该线程ID来操作线程的。 线程库NPTL提供了pthread_ self函数可以获得线程自身的ID: pthread_t pthread_self(void) pthread_t 到底是什么类型呢取决于实现。对于Linux目前实现的NPTL实现而言pthread_t类型的线程ID本质就是一个进程地址空间上的一个地址。 2.4 线程终止 如果需要只终止某个线程而不终止整个进程,可以有三种方法: 从线程函数return。这种方法对主线程不适用,从main函数return相当于调用exit。线程可以调用pthread_ exit终止自己。 一个线程可以调用pthread_ cancel终止同一进程中的另一个线程。 void pthread_exit(void *retval); 功能线程终止参数retva表示线程退出时的退出码信息返回值无返回值跟进程一样结束时无法返回自身。 intpthread_cancel(pthread_t thread); 功能取消一个执行中的线程参数线程ID返回值成功返回0失败返回错误码 2.5 线程等待 为什么需要线程等待  已经退出的线程其空间没有被释放仍然在进程的地址空间内。创建新的线程不会复用刚才退出线程的地址空间。 int pthread_ join(pthread_t threadvoid **value_ptr); 功能等待线程结束参数thread表示线程IDvalue_ptr 指向一个指针后者指向线程的返回值。 返回值成功返回0失败返回错误码。       调用该函数的线程将挂起等待直到id为thread的线程终止线程以不同的方法终止通过pthread_join得到的终止状态是不同的 如果thread线程通过return返回retval 所指向的单元里存放的是thread线程函数的返回值。如果thread线程被别的线程调用 pthread_cancel 异常终止掉retval 所指向的单元里存放的是常数PTHREAD_CANCELED就是 -1。如果thread线程是自己调用 pthread_exit 终止的retval 所指向的单元存放的是传给 pthread_exit 的参数。如果对thread线程的终止状态不感兴趣可以传NULL给 retval 参数。 2.6 线程分离 默认情况下新创建的线程是joinable的线程退出后需要对其进行pthread_join操作否则无法释放资源从而造成系统泄漏。 如果不关心线程的返回值join是一种负担这个时候我们可以告诉系统当线程退出时自动释放线程资源。 int pthread_detach(pthread_t thread); 可以是线程组内其他线程对目标线程进行分离也可以是线程自己分离 pthread_detach(pthread_self()); joinable和分离是冲突的一个线程不能既是joinable又是分离的。
http://www.w-s-a.com/news/281212/

相关文章:

  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营
  • 下单的网站建设教程wordpress php7.1
  • 爱网站查询怎么做网站的图片跳转
  • 阿里云建站百度收录吗北京的设计公司排名
  • 网站制作方案包含哪些内容布吉网站建设方案
  • 吉林省建设安全信息网站宜宾市建设工程质量监督站网站
  • 镇江网站建设远航网络帝国cms 网站地图 自定义
  • 金融网站模板源代码net网站是国际域名吗
  • 北京高端网站建设价格企业网络托管公司
  • 规范门户网站建设没有网站可以做域名解析吗
  • pc 手机网站源码织梦网站修改教程视频教程
  • 江苏省建设厅副厅长网站济南网络建站模板
  • 工信部网站备案举报做网站竞争大吗
  • 网站建设经费管理注册了域名怎么做网站
  • 哪个着陆页网站福田做网站的公司
  • 网站备案完成后该如何做宁波公司网站建设价格
  • 标识标牌网站怎么做手机网站开发session
  • 怎样建设网站是什么样的广州做和改版网站的公司
  • 世界网站制作帮助做职业规划的网站
  • wordpress 查看站点ppt素材大全免费图片
  • 网站做弹幕广告有什么兼职做it的网站
  • 什么公司做网站出名广州做外贸网站公司
  • 源码网站取名企业网站怎么做百度
  • 织梦网站如何打通百度小程序深圳网站设计灵点网络品牌