大嘴鸟儿童故事:POSIX线程使用概述
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 18:39:31
POSIX 线程 是 线程的 POSIX标准,定义了创建和操纵线程的一套 API。 POSIX是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称,
实现 POSIX 线程标准的库常被称作 Pthreads,一般用于 Unix-like POSIX 系统,如 Linux、 Solaris,但是 Microsoft Windows上的实现也存在,例如, pthreads-w32可以用于支持 Pthread API M的子集 [1]。(说明:在文本中,Pthreads中的P为大写)
POSIX:Portable Operating System Interface for UNIX
目录
- 1 目录
- 2 Example
- 3 参考
- 4 参见
- 5 外部链接
[编辑] 目录
Pthreads定义了一套 C程序语言类型、函数与常量,它以 pthread.h 头文件和一个线程库实现。
数据类型
- pthread_t:线程句柄
- 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_equal(): 对两个线程的线程标识号进行比较
- pthread_detach(): 分离线程
- pthread_self(): 查询线程自身线程标识号
[编辑] Example
C中使用 Pthreads的示例:
#include#include #include #include static void wait(void){ time_t start_time = time(NULL); while (time(NULL) == start_time) { /* do nothing except chew CPU slices for up to one second */ }} static void *thread_func(void *vptr_args){ int i; for (i = 0; i < 20; i++) { fputs(" b\n", stderr); wait(); } return NULL;} int main(void){ int i; pthread_t thread; if (pthread_create(&thread, NULL, thread_func, NULL) != 0) { return EXIT_FAILURE; } for (i = 0; i < 20; i++) { puts("a"); wait(); } if (pthread_join(thread, NULL) != 0) { return EXIT_FAILURE; } return EXIT_SUCCESS;}
这段程序创建了一个新线程,打印含有“b”的行,主线程打印含有“a”的行。当两个线程相互切换执行时输出结果为'a'和'b'交替出现。 More tutorials can be found below in the links section.
C#线程使用实例??
超线程如何使用
什么是posix标准?为什么要有posix标准?
POSIX标准是什么?
什么是 POSIX-style
什么是POSIX 1.0?
线程:Windows API 使用CreateThread() 问题??
怎样查出原始地址使用单线程
什么是posix 为什么说是用posix对发展有好处
POSIX指的什么呀?
!!!5线程&BT线程是什么意思?(在使用迅雷下载时出现这样的提示)
急需支持线程安全的队列源码,VC下使用
请问大家在JSP中是否可以使用线程机制?
请问如何使用一线程快速下载?有什么技巧?
请问如何使用一线程快速下载?有什么技巧??
使用迅雷下载中的单线程,多线程是什么意思?
使用超线程CPU的操作系统为什么出现停顿??
概述虎牢战吕布
名著概述
公司法概述
点焊概述
深圳概述
计算机网络概述?
咖啡因概述