- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 linux线程笔记12
死锁 两个线程试图同时占用两个资源,并按不同的次序锁定相应的共享资源 解决方式 按相同的次序锁定相应的共享资源使用函数pthread_mutex_trylock(),它是函数pthread_mutex_lock()的非阻塞函数 死锁案例 线程A先对资源a上锁,然后睡眠,线程B也对资源b上锁,然后睡眠,线程a睡眠结束后继续对资源b上锁,这时资源b已经被线程b上锁了,线程a被阻塞
2017-01-09 11:00:55 117
原创 linux线程笔记11
使用线程信号量解决线程的同步问题 PV操作--结果计算 程序模型 将线程信号量(I)的初值设为0,t1计算完毕做v(1)操作,t2先做p(1)操作阻塞,等到t1做v(1)操作完毕,t2从阻塞中返回 #include #include #include #include typedef struct { int res; sem_t sem; }Resu
2017-01-09 10:38:16 167
原创 linux线程笔记9
线程同步和互斥---线程信号量 信号量从本质上是一个非负整数计数器,是共享资源的数目,通常被用来控制对共享资源的访问。 信号量可以实现线程的同步和互斥 通过sem_post()和wem_wait()函数对信号量进行加减操作从而解决线程的同步和互斥。 信号量数据类型 sem_t 信号量的创建和销毁 #include int sem_init(sem_t *sem,int pshar
2017-01-09 10:07:21 271
原创 linux网络笔记
网络分层模型 物理层:网络和硬件设备的接口 数据链路层:在两个主机上建立数据的链路连接等 网络:路由、路径的选择等 传输层:向用户提供可靠的端到端的服务 TCP/IP协议族 TCP/IP实际上是一个一起工作的通信家族,为网际数据通信提供通路 TCP/IP协议族大体上分为三部分 Internet协议(IP)传输控制协议(TCP)和用户数据报协议(UDP)处于TCP和U
2017-01-06 15:53:32 87
原创 linux线程笔记8
读者---写者问题 案例:一个写,一个读 #include #include #inlcude #include typedef struct{ int value; pthread_cond_t rc; pthread_mutex_t rm; int r_w
2017-01-06 15:26:25 136
原创 linux线程笔记7
线程的状态转换 条件变量案例改进: 一个线程负责计算结果,多个线程负责获取结果 #include #include #include typedef struct { int res; int counter; //用于统计获取结果线程的数量
2017-01-06 10:57:47 99
原创 linux线程笔记6
线程同步---条件变量 互斥锁的缺点是它只有两种状态:锁定和非锁定 条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补互斥锁的不足。 条件变量内部是一个等待队列,放置等待的线程,线程在条件变量上等待和通知,互斥锁用来保护等待队列(对等待队列上锁),条件变量通常和互斥锁一起使用 条件变量允许线程等待特定条件发生,当条件不满足时,线程通常先进入阻塞状态,等待条件发生变化,一旦其他的某个
2017-01-06 09:10:18 135
原创 linux线程笔记4
互斥锁属性创建和销毁 #include int pthread_mutexattr_init(pthread_mutexattr_t *attr); int pthread_mutexattr_destroy(pthread_mutexattr *attr); 返回值:成功返回0 ,出错返回错误编号 参数:attr:互斥锁属性 互
2017-01-05 14:22:17 190
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人