<threads.h>头文件
<threads.h>头文件是个可选头文件;如果实现定义了宏__STDC_NO_THREADS__,实现不需要提供<threads.h>头文件,也不需要支持<threads.h>头文件的任何功能。
<threads.h>头文件包含<time.h>头文件;在<threads.h>头文件中定义了多个宏,并声明了多个类型、枚举常量、函数,用以支持多线程的执行,具体如下:
类型(type):| cnd_t | 保存条件变量标识符的完整对象类型。 |
| thrd_t | 保存线程标识符的完整对象类型。 |
| tss_t | 保存线程专属存储指针标识符的完整对象类型。 |
| mtx_t | 保存互斥标识符的完整对象类型。 |
| tss_dtor_t | 析构函数指针类型。 |
| thrd_start_t | 函数指针类型。 |
| once_flag | 包含供call_once函数使用标志的类型。 |
宏(macro):
| thread_local | 表示具有线程存储期限的宏。 |
| ONCE_FLAG_INIT | 初始化once_flag类型对象的宏。 |
| TSS_DTOR_ITERATIONS | 表示单个线程中析构函数最大调用次数的宏。 |
枚举常量(enumeration constant):
| mtx_plain | 表示简单、非递归互斥的枚举常量。 |
| mtx_recursive | 表示递归互斥的枚举常量。 |
| mtx_timed | 表示支持超时、非递归互斥的枚举常量。 |
| thrd_timedout | 表示超时的枚举常量。 |
| thrd_success | 表示操作成功的枚举常量。 |
| thrd_busy | 表示因请求资源已在使用而操作失败的枚举常量。 |
| thrd_error | 表示操作失败的枚举常量。 |
| thrd_nomem | 表示因无法分配内存而操作失败的枚举常量。 |
函数(function):
初始化函数:
| call_once | 确保函数只被调用一次的函数。 |
| cnd_broadcast | 解锁所有等待条件变量的线程的函数。 |
| cnd_destroy | 销毁条件变量的函数。 |
| cnd_init | 创建条件变量的函数。 |
| cnd_signal | 解锁一个等待条件变量的线程的函数。 |
| cnd_timedwait | 支持超时等待条件变量的函数。 |
| cnd_wait | 等待条件变量的函数。 |
| mtx_destroy | 销毁互斥的函数。 |
| mtx_init | 创建互斥的函数。 |
| mtx_lock | 加锁互斥的函数。 |
| mtx_timedlock | 支持超时加锁互斥的函数。 |
| mtx_trylock | 尝试加锁互斥的函数。 |
| mtx_unlock | 解锁互斥的函数。 |
| thrd_create | 创建线程的函数。 |
| thrd_current | 标识调用线程的函数。 |
| thrd_detach | 分离线程的函数。 |
| thrd_equal | 测试两个线程是否为同一线程的函数。 |
| thrd_exit | 终止当前线程的函数。 |
| thrd_join | 连接线程的函数。 |
| thrd_sleep | 暂停当前线程的函数。 |
| thrd_yield | 让其它线程运行的函数。 |
| tss_create | 创建线程专属存储指针的函数。 |
| tss_delete | 释放线程专属存储所用资源的函数。 |
| tss_get | 获取线程专属存储的函数。 |
| tss_set | 设置线程专属存储的函数。 |