线程基本编程——线程函数大全

  • 格式:doc
  • 大小:39.00 KB
  • 文档页数:5

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线程基本编程

索引:

1.创建线程pthread_create

2.等待线程结束pthread_join

3.分离线程pthread_detach

4.创建线程键pthread_key_create

5.删除线程键pthread_key_delete

6.设置线程数据pthread_setspecific

7.获取线程数据pthread_getspecific

8.获取线程标示符pthread_self

9.比较线程pthread_equal

10.一次执行pthread_once

11.出让执行权sched_yield

12.修改优先级pthread_setschedparam

13.获取优先级pthread_getschedparam

14.发送信号pthread_kill

15.设置线程掩码pthread_sigmask

16.终止线程pthread_exit

17.退出线程pthread_cancel

18.允许/禁止退出线程pthread_setcancelstate

19.设置退出类型pthread_setcanceltype

20.创建退出点pthread_testcancel

21.压入善后处理函数pthread_cleanup_push

22.弹出善后处理函数pthread_cleanup_pop

--------------------------------------------------------------------------------

1.创建线程pthread_create

#include

int pthread_create(pthread_t *tid, const pthread_attr_t *tattr, void *(*start_routine)(void *), void *arg);

返回值:函数成功返回0。任何其他返回值都表示错误。

创建一个线程。

参数tattr中含有初始化线程所需要的属性,start_routine是线程入口函数的地址,当start_routine返回时,相应的线程就结束了。

当函数成功时,线程标示符保存在参数tid指向的内存中。

如果不指定属性对象,将其置为NULL,则创建一个缺省的线程,有如下属性:

非绑定的;

未分离的;

由一个缺省大小的堆栈;

具有和父线程一样的优先级。

注意:在创建子线程时,传给子线程的输入参数最好是由malloc()函数返回的指针或指向全局变量的指针,而不要是指向局部变量的指针。要保证子线程处理参数时,该区域仍然有效。--------------------------------------------------------------------------------

2.等待线程结束pthread_join

#include

int pthread_join(pthread_t tid, void **status);

返回值:函数成功返回0。任何其他返回值都表示错误。

等待一个线程结束。

该函数阻塞调用它线程,直到参数tid指定的线程结束。

tid指定的线程必须在当前进程中,同时tid指定的线程必须是非分离的。

不能有多个线程等待同一个线程终止。如果出现这种情况,一个线程将成功返回,别的线程将返回错误ESRCH。

如果参数status不为NULL,则将线程的退出状态放在status指向的内存中。

--------------------------------------------------------------------------------

3.分离线程pthread_detach

#include

int pthread_detach(pthread_t tid);

返回值:函数成功返回0。任何其他返回值都表示错误。

将非分离的线程设置为分离线程。即通知线程库在指定的线程终止时回收线程占用的内存等资源。

在一个线程上使用多次pthread_detach的结果是不可预见的。

--------------------------------------------------------------------------------

4.创建线程键pthread_key_create

#include

int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));

返回值:函数成功返回0。任何其他返回值都表示错误。

在进程中分配一个键值,这个键被用来表示一个线程数据项。这个键对进程中所有的线程都是可见的。刚创建线程数据键时,在所有线程中和这个键相关联的值都是NULL。

函数成功返回后,分配的键放在key参数指向的内存中,必须保证key参数指向的内存区的有效性。

如果指定了解析函数destructor,那么当线程结束时并且将非空的值绑定在这个键上,系统将调用destructor函数,参数就是相关线程与这个键绑定的值。绑定在这个键上的内存块可由destructor函数释放。

--------------------------------------------------------------------------------

5.删除线程键pthread_key_delete

#include

int pthread_key_delete(pthread_key_t key);

返回值:函数成功返回0。任何其他返回值都表示错误。

删除线程数据键。这个键占用的内存将被释放,该键再被引用将返回错误。

在调用该函数之前,程序必须释放和本线程相关联的资源,该函数不会引发线程数据键的解析函数。

--------------------------------------------------------------------------------

6.设置线程数据pthread_setspecific

#include

int pthread_setspecific(pthread_key_t key, const void *value);

返回值:函数成功返回0。任何其他返回值都表示错误。

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

函数不会释放原来绑定在键上的内存,给一个键值绑定新的指针时,必须释放原指针指向的

相关主题