Unix api
● 线程
进程的所有信息都被自己的线程共享,包括代码、全局内存、堆、栈、文件描述符。
线程拥有自己的信息,包括线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程的私有数据。
线程id(pthread_t)只在进程里有效。
一个进程必须有一个线程作为它的指令执行体。
进程退出时,会强制清除它的所有线程。
创建线程:pthread_create
线程退出的三种方式:1. 在启动例程中直接返回;2.被其他线程取消;3.调用pthread_exit
取消本进程的其他线程:pthread_cancel
线程同步的方式:
1. 互斥锁 pthread_mutex_t
pthread_mutex_init //申请
pthread_mutex_destory //销毁
pthread_mutex_lock //加锁
pthread_mutex_trylock //尝试加锁,不会阻塞
pthread_mutex_unlock //释放锁
避免死锁的方法:使用pthread_mutex_trylock,如果无法获得锁,就试着放弃自己占有的锁,等一段时间再重新获取所有锁
Unix api的更多相关文章
- Unix 编程
1. Users and Groups 真实用户ID和真实组ID 真实用户ID和组ID表示运行进程的真实用户 ID 和 组ID. 有效用户ID和有效组IDp 有效 ID 是进程进行相关操作(比如系统调 ...
- unix 环境高级编程-读书笔记与习题解答-第二篇
第四节 输入与输出 上次的笔记中写到的 open, read, write, lseek 以及close ,都是不带缓存的IO函数,这些函数都使用文件描述符进行工作. 上一篇笔记用到的 read(ST ...
- unix环境高级编程-读书笔记与习题解答-第一篇
从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是 ...
- Cygwin 是一个用于 Windows 的类 UNIX shell 环境
cygwin的安装使用 Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性:以及 ...
- linux文件锁的应用,POSIX,unix标准,linux标准
1. perl,flock加锁.java也能加锁. 2. 先创建文件并打开,才能加锁(写打开?). 3. 可以用于判断进程是否一直在运行(用另一进程判断),如果锁一直在,则进程在:锁不在,则原进程或意 ...
- UNIX 环境模拟工具Cygwin安装及使用图文教程
对于 UNIX 本身,也有各种称呼.IBM® 大型机用户说各种带字母 "z" 的行话,比如 IBM z/OS® 和 System z9 Virtual Machine (z/VM) ...
- xv6的作业翻译——作业1 - shell和系统调用
Xv6的lecture LEC 1 Operating systems L1: O/S overview L1:O/S概述 * 6.828 goals 6.828的目标 Understan ...
- Linux系统1.md
计算机 介绍 电子计算机(英语:computer),亦称电脑,是一种利用电子学原理,根据一系列指令对数据进行处理的工具. 在现代,机械计算机的应用已经完全被电子计算机所替换,其所相关的技术研究叫计算机 ...
- Cygwin使用方法
对于 UNIX 本身,也有各种称呼.IBM® 大型机用户说各种带字母 “z” 的行话,比如 IBM z/OS® 和 System z9 Virtual Machine (z/VM):嵌套系统开发人员使 ...
随机推荐
- framework中编译anroid工程并在模拟器上运行
1.在eclipse下创建android工程Hello并拷贝到“源码目录/packages/experimental”下面 2.在Hello工程目录下面创建Android.mk文件,内容如下: L ...
- 使用SpringBoot Admin监控SpringCloud微服务
spring-boot admin的github地址:https://github.com/codecentric/spring-boot-admin 本文基于SpringCloud的环境和配置上增加 ...
- oracle完全删除实例
问题描述: 重建oracle库实例,因此要删除数据库实例 问题解决: 利用自用自带的dbca库管理,实现图形化删除实例 01.登录安装oracle数据库的linux 打开xshell企业版的Xman ...
- void java.lang.System.gc()
void java.lang.System.gc() Runs the garbage collector. Calling the gc method suggests that the Java ...
- (转)超过 130 个你需要了解的 vim 命令
从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编辑器之一.5 年前,我写了一个问自己名为 “每个程序员都应该知道的 100 个 vim 命令” 这次算是之前那篇文章的改进版,希望你 ...
- flink source code
https://github.com/apache/flink/tree/master/docs https://github.com/flink-china/1.6.0 https://github ...
- github贡献开源项目
1.正常流程 1.拷贝项目到自己的github 2.本地修改后提交远程仓库 3.创建讨论Pull requests 4.开源项目者合并到master分支 5.删除仓库 2.快速发出讨论Pull req ...
- linux每日命令(36):wc命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 一.命令格式 wc [-clw][--help][--version][文件... ...
- 解决python-memcache报错:“Unknown flags on get: 20”
[本文出自天外归云的博客园] 在使用python的pytho-memcache库时出现了一个问题,在调用get方法获取键值的时候报错:Unknown flags on get: 20 在网上查了,发现 ...
- 【HTTP】 认证和单点登录 【瞎写的…】
■ Cookie,Session,Token HTTP协议是一种无状态的协议.换言之,每一个HTTP请求在得到HTTP回应之后就会断开客户端到服务端的连接.客户端可能会有下一次请求,但是那是下一次的事 ...