pthread(POSIX Thread)

来源:互联网 发布:js给div添加class 编辑:程序博客网 时间:2024/06/07 22:41
phread
* pthread(POSIX threads):是兼容POSIX标准操作系統的線程接口代碼,什麼是POSIX标准?-->POSIX标准是操作系統為應用程序提供的API接口國際標準,該標準定義了一整套 創建和操縱 線程的API。
* 线程库实行了POSIX线程标准通常称为Pthreads。POSIX线程具有很好的可移植性,使用pthreads编写的代码可运行于Solaris、FreeBSD、Linux 等平台,Windows平台亦有pthreads-win32可供使用
*


pthread數據類型: pthread_t:线程ID  pthread_attr_t:线程属性
*


 操縱函數: 
* pthread_create():创建一个线程
* pthread_exit():终止当前线程
* pthread_cancel():中断另外一个线程的运行
* pthread_join():阻塞当前的线程,直到另外一个线程运行结束
* pthread_attr_init():初始化线程的属性
* pthread_attr_setdetachstate():设置脱离状态的属性(决定这个线程在终止时是否可以被结合)
* pthread_attr_getdetachstate():获取脱离状态的属性
* pthread_attr_destroy():删除线程的属性
* pthread_kill():向线程发送一个信号



同步函數:
* 用于 mutex 和条件变量
* pthread_mutex_init() 初始化互斥锁
* pthread_mutex_destroy() 删除互斥锁
* pthread_mutex_lock():占有互斥锁(阻塞操作)
* pthread_mutex_trylock():试图占有互斥锁(不阻塞操作)。即,当互斥锁空闲时,将占有该锁;否则,立即返回。
* pthread_mutex_unlock(): 释放互斥锁

* pthread_cond_init():


* 初始化条件变量
* pthread_cond_destroy():销毁条件变量
* pthread_cond_signal(): 唤醒第一个调用pthread_cond_wait()而进入睡眠的线程
* pthread_cond_wait(): 等待条件变量的特殊条件发生
* Thread-local storage(或者以Pthreads术语,称作线程特有数据):
* pthread_key_create(): 分配用于标识进程中线程特定数据的键
* pthread_setspecific(): 为指定线程特定数据键设置线程特定绑定
* pthread_getspecific(): 获取调用线程的键绑定,并将该绑定存储在 value 指向的位置中
* pthread_key_delete(): 销毁现有线程特定数据键
* pthread_attr_getschedparam();获取线程优先级
* pthread_attr_setschedparam();设置线程优先级


* 解析: 根據pthread的數據機制,每個基於POSIX標準下的新創建的線程,都需要pthread_key_create(pthread_key_t *key , void(*destructor)(*void))分配一個特定的數據key。這個key是與系統內部的Pkey指針數組的指針相對應.void(*destructor)(*void),這個參數是需要傳入一個 析構函數(作內存清理操作的函數).通過這種key指尖之間的關係,pthread_setspecific(key,*value)可以將key對應的pkey指針指向value. pthread_getspecific(key)則可以取出key對應的pkey指針.這樣可以將線程內的數據在各個函數之間共享.
* 缺點: 
* 1.需要通過析構函數手動管理內存
* 2.手動設置線程優先級
* 3.手動管理線程的生命週期
0 0
原创粉丝点击