zoukankan      html  css  js  c++  java
  • Examples

    记录肖堃老师讲解的linux线程

    1. 创建线程

    int pthread_create( (pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg ) )

    参数:

    thread - 指向线程ID的指针,当函数成功返回时将存储所创建的子线程ID。

    attr - 用于指定线程属性(一般直接传入空指针NULL,采用默认线程属性)

    start_routine - 线程的启动例程函数指针,创建的线程首先执行该函数代码(可以调用其他函数)

    arg - 向线程的启动例程函数传递信息的参数。

    返回值:

      成功返回0,出错返回各种错误码

    调用pthread_create函数的线程,是所创建线程的父线程。

    2. 线程的终止方式

    1)线程从启动例程函数中返回,函数返回值作为线程的退出码

    2)线程被同一进程中的其他线程取消

    3)线程在任意函数中调用pthread_exit函数终止执行

    取消线程函数(取消同一进程中的其他线程,即让该线程终止):

    pthread_cancel( pthread_t tid )

    参数:

      tid - 需要取消的现场ID

    返回值:

      成功返回0,出错返回错误码

    线程终止函数

    void pthread_exit( void *rval_ptr )

    参数:

      rval_ptr - 线程退出时,需要传递给父线程的参数,该指针将参数传递给pthread_join函数(与exit函数参数用法类似)

    在默认情况下,pthread_cancel函数与被取消线程(ID等于tid的线程)自身调用pthread_exit函数效果等同。

    pthread_cancel并不等待线程终止,它仅仅是提出请求。

    父线程等待子线程终止函数:

    int pthread_join( pthread_t thread, void **rval_ptr )

    参数:

      thread,等待线程的标识符

      rval_ptr,线程结束时的返回值(若不关心线程返回值,可直接将该参数设置为空指针)

      若线程从启动线程(子线程)返回,rval_ptr将包含子线程的返回值

      若线程是被其他线程取消(同进程的其他线程),rval_ptr指向的内存单元值置为PTHREAD_CANCELED

      若线程通过调用pthread_exit函数终止,rval_ptr就是调用pthread_exit时传入的参数。

    返回值:

      成功,返回0;错误返回错误码

    调用该函数的父线程将一直被阻塞,直到指定的子线程终止。

  • 相关阅读:
    关于Sprte2d的图片切割
    关于U3d GameObject类型的可用描述
    [小巩u3d] Sprite 2D的资源占用分析
    [小巩u3d] 关于Raycast对BoxCollider和BoxCollider2d的碰撞监测规则
    Web服务器父与子 Apache和Tomcat区别
    [转]IIS添加MIME扩展类型及常用的MIME类型列表
    转载自知乎:程序员干到三十就干不动了」的说法是从哪来的?
    Unity之如何去除动画scale
    Unity shader学习之简单的水效果
    Unity shader学习之卡通渲染,轮廓线
  • 原文地址:https://www.cnblogs.com/hjj801006/p/13032926.html
Copyright © 2011-2022 走看看