线程和线程同步(pthread)

pthread  ==> clone()

                                       pthread_create()     

                                       pthread_join()的作用是接受返回值

               主线程可以用pthread_exit();来按线程的方式退出

pthread_t   

                                        pthread_self ()  取当前线程的标识符

                                         pthread_equal() 比较

数据的键 :        pthread_key_t key; 线程数据( TSD )TSD 类似于全局变量,但是线程私有的

                                       pthread_key_create()该函数成功时,份配的建放在 key 中,必须保证 key 指向的内存区有效 。

                                       pthread_key_destructor() 用来释放不再需要的内存。

                                       pthread_key_delete()

                                       pthread_setspecific()    设置和某个线程数据键绑定在一起的线程数据 (一般是指针)

                                       pthread_getspecific() 获取绑定在线程数据键上的值,并在指定的位置存储值

sched  cpu线程的优先权

                                sched_yield() 让出线程

                                pthread_setschedparam()设置线程优先权

                                pthread_getschedparam()取得线程优先权

kill  向线程发信号          

                                    pthread_kill()

                                     pthread_sigmask()

                                   pthread_atfork()

exit 

                                      pthread_exit()      分离的目的是不管线程什么情况直接对资源清理,不分离可以保留

pthread_exit( &status );终止当前线程,所有绑定在线程键上的内存将释放。如果当前线程是未分离的,该线程的标识符和推出代码( status )被保留,直到其它线程用 pthread_join() 等待当前线程的终止。如果当前线程是分离的, status 被忽略,线程标识符立即收

pthread_cond_wait 条件等

attr     线程属性

                                   pthread_attr_init    初始化一个线程属性对象,属性值是缺省值,占用内存由线程库分配。

属性对象的缺省值:scope (线程域) PTHREAD_SCOPE_PROCESS ; Detachstate (分离状态) PTHREAD_CREATE_JOINABLE;Stackaddr (堆栈地址) NULL Stacksize (堆栈大小) 1Mb;  priority (优先级) 父进程优先级  ; Inheritsched ( 继承调度优先级)PTHREAD_INHERIT_SCHED; schedpolicy (调度策略) SCHED_OTHER


创建线程时,如果指定这个线程为分离线程,一旦这个线程终止,他的线程标识符和其他相关的资源可以立即被使用。如果不需要等待某个线程终止,可以把它设定为分离

原文地址:https://www.cnblogs.com/hehehaha/p/6333019.html