C语言线程函数
除了创建线程的 thread_create()函数、获取返回值的 thread_join()函数和释放线程占用资源的 thread_detach()函数,C11 还提供了另外用于线程控制的 5 个函数:
结构参数 timespec 有两个成员,分别用于存储秒和纳秒:
结构中成员的顺序未被指定。在下面的例子中,除非通过信号来唤醒,否则正在调用的线程将等待至少 100 毫秒:
thrd_t thrd_current(void);该函数返回其所在线程的线程标识。
int thrd_equal(thrd_t thr0,thrd_t thr1);仅当两个线程标识符 thr0、thr1 分别引用了两个不同线程时,返回 0。
int thrd_sleep(const struct timespec*duration,struct timespec*remaining);使得正在调用的线程等待一段时间,等待时间由 duration 指定。仅当该函数收到唤醒的信号时,它才提前返回。在这种情况下,该函数将剩余倒数时间保留在 remaining 引用的对象中,假设 remaining 不是一个空指针。指针 duration 和 remaining 不得指向同一个对象。
结构参数 timespec 有两个成员,分别用于存储秒和纳秒:
time_t tv_sec; // 秒≥0 long tv_nsec; // 0 ≤纳秒≤999 999 999
结构中成员的顺序未被指定。在下面的例子中,除非通过信号来唤醒,否则正在调用的线程将等待至少 100 毫秒:
struct timespec duration = {0}; duration.tv_nsec = 100*1E6; // 1毫秒 = 1 000 000纳秒 thrd_sleep(&duration,NULL); // 休眠100毫秒如果倒计时完成,则 thrd_sleep()返回 0;如果线程函数由一个信号唤醒,即实现提前返回,则 thrd_sleep()返回 -1。其他负数返回值表示错误。
void thrd_yield(void);该函数建议操作系统调度器中断当前调用的线程,并将 CPU 时间分给另一个线程。
_Noreturn void thrd_exit(int result);以 result 作为结果值结束正在调用线程。在线程中执行的所有函数都可以调用 thrd_exit()。该函数调用相当于在线程函数中执行语句 return result;。最后一个线程退出后,整个程序将正常退出,换句话说,它类似于调用具有参数 EXIT_SUCCESS 的函数 exit()。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算