unix线程控制
来源:互联网 发布:淘宝怎样开通直通车 编辑:程序博客网 时间:2024/05/17 10:24
线程基本知识
线程同线程一样存在线程id,不过线程id和线程id不一样,线程id只有
在当前线程的上下文中有用,是附属于当前线程的。线程共享线程的空间没有
自己专享空间,所以需要解决的问题就是线程、 线程对一个临界区访问的同步
问题,这个就是我们常说的一个线程是否是线程安全的,如果是安全就不存在
这种同步问题,不安全的就是没有对临界区资源的访问做同步处理,主要就是
各种锁了。
线程创建
#include <pthread.h> int pthread(pthread_t *restrict tipd, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg); 返回值:若成功返回0;否则,返回错误编号
fork 子线程复制父线程线程空间但是共享正文部分,文件描述符也复制
就相当于执行了 dup 函数一样。
线程结束
正常结束
#include <stdlib.h> void exit(int status); void _Exit(int status); #include <unistd.h> void _exit(int status); 其中exit函数结束之前,会调用fflush函数,冲洗缓冲区 _Exit _exit 函数 不冲洗缓冲区直接结束线程。 main 函数中的return 相当于exit 函数,效果一样。 这些函数用在线程中会直接结束整个进程包括线程。 #include <pthread.h> void pthread_exit(void *rval_ptr); /* rval_ptr 相当于结束状态 exit(stat)一样) */
调用者阻塞等待子线程结束
#include <pthread.h> int pthread_join(pthread_t thread, void **rval_ptr); 返回值:若成功,返回0;否则,返回错误编号 跟wait_pid 函数功能一样,只是针对的是线程。
线程阻塞
#include <unistd.h> int pause(void); 返回值:-1,errno 设置为 EINTR 只有执行了一个信号处理程序并从其返回时,pause才返回。在这种情况下 pause返回-1, errno 设置为EINTR。 unsigned int alarm(unsigned int seconds); 返回值:0或以前设置的闹钟时间的余留秒数 sleep(int seconds) ;这个函数大家应该都很熟悉吧,那大家有木有自己 写过这个函数,或者知道这个函数是怎么实现的呢,其实我们可以通过alarm 这个函数定时,然后让线程阻塞(pause),时间到之后唤醒线程就可以达到sleep的效果 不过因为涉及到了信号的处理需要考虑竞度问题,因为alarm时间到了之后系统 会给你发出信号,信号处理完之后会继续执行pause之后的。下面是一个简单的例子 unsigned int sleep1(unsigned int seconds) { if (signal(SIGALRM, sig_alrm) == SIG_ERR) return(seconds); alarm(seconds); /* start the timer */ pause(); /* next caught sinal wakes us up */ return(alarm(0)); /* turn off timer, return unslept time */ }
0 0
- Linux/UNIX线程控制
- Linux/UNIX线程控制
- unix线程控制
- UNIX高级编程-线程控制
- UNIX再学习 -- 线程控制
- Unix——线程和线程控制
- UNIX/Linux-线程控制(实例入门篇)
- unix编程(七)线程控制
- Unix线程概念、控制原语、属性
- 《unix高级环境编程》线程控制——线程属性
- 《unix高级环境编程》线程控制——线程属性
- 《UNIX环境高级编程》 第12章 线程控制 【读书笔记】
- UNIX环境高级编程(十二)线程控制
- UNIX环境高级编程(第12章 线程控制)
- 《unix高级环境编程》线程控制——同步属性
- 《unix高级环境编程》线程控制——同步属性
- UNIX环境高级编程-第12章- 线程控制 - 一
- UNIX环境高级编程-第12章- 线程控制 - 二
- PAT (Basic Level) Practise (中文)1014.福尔摩斯的约会
- Redis实现类似SQL的where多条件查询
- Css背景图片知识总结
- 时间系统、进程的调度与切换
- AVL树的基本实现
- unix线程控制
- nginx install
- 串的基本函数的实现
- 《西窗法雨》一天读完,怕不怕
- C语言字符串的经典例题
- Linux 安装
- hadoop的安装
- 移动前端不得不了解的HTML5 head 头标签(2016最新版)
- 【PAT甲级】1035. Password (20)