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

线程的基本概念

时间:2016-04-17 23:31:05      阅读:406      评论:0      收藏:0      [点我收藏+]

标签:thread   寄存器   计数器   上下文   大家庭   

一.有关于线程的定义

    线程是进程执行的一个分支,运行在进程的内部,是调度的一个基本单元。线程不像进程强调独占,它更多强调的是共享。一个进程可以有多个控制流程即有多个线程,进程是承担和分配系统资源的基本实体。

举个例子:

  进程好比是一个大家庭,而线程就相当于是家里的每一个成员,每个成员各司其职,共同让这个大家庭变得更好。这个大家庭的资源,每个成员都可以共享,但这并不是绝对的。因为每个成员都有自己私有的空间或秘密等。所以线程有和进程共同的东西,也有自己私有的。

线程和进程共同的:

   1.文件描述符表:描述当前进程所打开的所有文件;

   2.当前工作目录;

   3.用户id;

   4.信号处理方式

线程私有的:(2和3 是重点)

    1.线程的id;

    2.硬件上下文,包括各寄存器的值,栈指针和程序计数器;

    3.栈空间(线程自己的);

    4.errno变量;

    5.信号屏蔽字;//处理需要处理的,屏蔽不需处理的

    6.调度优先级;

二.线程的控制

   1.线程的创建

   线程的创建是由POSIX 标准定义的,称为POSIX thread 或pthread。在编译的时候要加上_lpthread选项。

  线程的创建函数:

    pthread_create(pthread _t thread,const pthread_attr _t *attr,void*(*start_routine)(void*),void *arg);//arg 是给第三个传的参数

  2.线程的终止

     线程在创建退出后,主线程必须进行等待拿到其退出状态。函数原型为:

      int pthread_join(pthread_t thread,void ** retval)

      这个函数是以阻塞方式进行的。成功返回0,失败返回错误码。

     第一个终止方式:

       在线程内部直接return 或 用函数 pthread_exit(void *retval);

     第二个终止方式:

       在线程内部使用pthread _cancel(pthread_t thread);

         thread 可以用函数pthread_t pthread_self(void)获得当前线程自己的id。

      第三个终止方式:

       在主函数内部调用函数 pthread _cancel(pthread_t thread);

三.线程代码




     

     


本文出自 “输出菱形图案” 博客,请务必保留此出处http://10541571.blog.51cto.com/10531571/1764782

线程的基本概念

标签:thread   寄存器   计数器   上下文   大家庭   

原文地址:http://10541571.blog.51cto.com/10531571/1764782

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