码迷,mamicode.com
首页 > 编程语言 > 详细

系统调度—‘线程’

时间:2016-07-29 23:03:22      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:线程、系统调度、pthread

    在前面的博文中讨论了进程的相关概念,这里重新引入一下‘线程’的概念。进程有各自独立的地址空间,所以进程间的通信是比较麻烦的,只能借助管道等才能够实现进程间通信。而linux系统中,多个线程共享进程的地址空间(也可以说是进程是一个独占资源的线程),所以线程之间的通信是非常方便的。

注:以下只针对linux系统。


★进程与线程的比较

     在linux系统中,线程和进程之间的区分不是特别明显,但是它们之间还是有一些区别的:

          (1)进程是系统资源分配的基本单位,线程是系统调度的基本单位。

          (2)每个进程都有自己独立的地址空间,而线程之间的资源是共享的。

          (3)进程间切换的系统开销较线程间切换的系统开销大。

          (4)线程也有自己的私有栈,保存一些私有资源。


★线程创建和终止

     头文件:#include <pthread.h>

     创建:   int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*start_routine)(void*), void* arg);

     终止:  void pthread_exit(void* retval);

     等待:  int pthread_join(pthread_t thread, void** retval);


其中:终止线程有以下几种方法:

      ①从线程函数进行return。但是在主线程中return相当于终止整个进程。

       ②一个线程可以调用pthread_cancel终止同一进程中的另一个线程。

       ③线程可以调用pthread_exit终止自己。


例:

技术分享

运行结果:

技术分享


例:

技术分享

技术分享

运行结果:

技术分享


★线程分离

     int pthread_detach(pthread_t thread);

     线程是可以进行分离的,线程可以分离自己,也可以分离子线程。一个分离后的线程是不能被其他线程回收的,它的资源是在它终止时由系统进行释放,但是当主线程退出后,分离的线程也将会退出,资源会由系统自动释放。


例:

技术分享

技术分享

运行结果:

技术分享



本文出自 “无心的执着” 博客,转载请与作者联系!

系统调度—‘线程’

标签:线程、系统调度、pthread

原文地址:http://10740590.blog.51cto.com/10730590/1831875

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!