线程

线程

何为线程?

进程相当于一个项目,而线程就是为了完成项目需求,而建立的一个个开发任务.

如何创建线程?

线程的数据

线程访问的数据细分为三类.

  • 线程栈上的本地数据
    如:函数执行过程中的局部变量

    修改线程栈的大小:

    int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
  • 在整个进程里共享的全局数据
    如:全局变量
    通过互斥方式来保护数据
    Mutex,全称Mutual Exclusion.模式为在共享数据访问的时候,去申请加把锁,谁先拿到锁,谁就有访问权限,访问结束,释放锁.遵循谁先拿到谁访问.

  • 线程私有数据

    • 通过pthread_key_create函数创建:

      
      int pthread_key_create(pthread_key_t *key, void (*destructor)(void*))
    • 通过pthread_setspecific函数设置key对应的Value

      
      int pthread_setspecific(pthread_key_t key, const void *value)
    • 通过pthread_getspecific函数获取key对应的value

      
      void *pthread_getspecific(pthread_key_t key)
    • 线程退出时,会调用析构函数释放value.

多线程流程图


这是阅读极客时间刘超老师的<<趣谈Linux操作系统>>所记录的笔记.

发表评论

电子邮件地址不会被公开。 必填项已用*标注