Android -C++ POSIX线程

POSIX 线程 也称为 PThreads 

是一个POSIX 标准。

用pthread_create 来创建线程

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

参数如下:

  1. 指向thread_t 类型变量的指针,函数 用该指针返回新线程的句柄。
  2. 指向pthread_attr_t结构的指针形式存在的新线程属性,可以通过该属性指定新线程的栈基址,栈大小,守护大小。默认为空 NULL
  3. 指向线程启动程序的函数指针,启动程序函数签名 格式void *(start_routine)(void*)

创建指针成功时候 返回 0,否则返回一个错误代码。

线程的基本使用方法·

  • pthread_create():创建线程开始运行相关线程函数,运行结束则线程退出。
  • pthread_eixt():因为 exit()使用来结束进程的,所以需要特定的结束线程的函数。
  • pthread_join():挂起当前线程,用于阻塞式 等待线程结束,如果线程结束立即返回0 ==成功。
  • pthread_cancel():发送终止信号给thread线程,成功返回0,但是成功不意味 pthread会终止。
  • pthread_testcancel ():在不包含取消点,但是又需要取消点的地方创建一个取消点,以便在一个没有包含取消点的执行代码线程中响应取消请求。
  • pthread_setcancelstate():设置本县城对cancle 线程的反应。
  • pthread_setcanceltype():设置取消状态,继续运行至下一个取消点再退出或者 立即执行取消动作。
  • pthread_setcancel():设置取消状态。

线程互斥与同步机制

  • pthread_mutex_init():互斥锁的初始化
  • pthread_mutex_lock():锁定互斥锁,如果尝试锁定已经被上锁的互斥锁则阻塞至可用为止。
  • pthread_mutex_trylock():非阻塞的锁定互斥锁
  • pthread_mutex_unlock():释放互斥锁
  • pthread_mutex_destory():互斥锁销毁函数。

信号量线程控制机制

C/C++在使用信号量机制的时候,默认的信号量为匿名信号量。

  • sem_init(sem):初始化一个定位在sem 的匿名信号量
  • sem_wait():把信号量减1 操作,如果信号量的当前值 为0则进入阻塞,为原子操作。
  • sem_trywait():如果信号量的当前值为0则返回错误而不是阻塞调用(errno=EAGAIN),其实是sem_wait()的非阻塞版本。
  • sem_post():给信号量的值加1,它是一个原子操作,即 同时对同一个信号量做加1,操作的两个线程不会冲突。
  • sem_getvalue(sval):把sem指向的信号量当前值放置在sval 指向的整数上。
  • sem_destory (sem):销毁由sem 指向的匿名信号量。

 

 

 

你可能感兴趣的:(Android -C++ POSIX线程)