摘要: 如果互斥锁类型为 PTHREAD_MUTEX_NORMAL,则不提供死锁检测。尝试重新锁定互斥锁会导致死锁。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或未锁定,则将产生不确定的行为。 如果互斥锁类型为 PTHREAD_MUTEX_ERRORCHECK,则会提供错误检查。如果某个线程尝试重新锁定 阅读全文
posted @ 2018-01-25 23:06 zzfx 阅读(295) 评论(0) 推荐(0)
摘要: 条件变量相当于订阅-发布机制; 或者相当于同步的通知机制; 订阅和发布具有先后顺序;所以需要互斥量来维护顺序。 顺序不对,存在信号丢失问题。 Problem statement[edit] For many applications, mutual exclusion is not enough. 阅读全文
posted @ 2018-01-25 22:17 zzfx 阅读(206) 评论(0) 推荐(0)
摘要: 线程不存在真正的唤醒机制; 所谓的唤醒只是将同步变量置1;在下一个cpu时间片竞争变量,将线程的状态置就绪状态,从而执行; 或者处于自悬状态,有信号释放,立即捕获,从而执行。 阅读全文
posted @ 2018-01-25 22:13 zzfx 阅读(244) 评论(0) 推荐(0)
摘要: 使用条件变量,调用signal/broadcast的时候,无法知道是否已经有线程等在wait上了。因此,一般要先改变条件状态,然后再发送signal/broadcast信号。然后在wait调用线程上先检查条件状态,只有当条件状态为假的时候才进入pthread_cond_wait进行等待,从而防止丢失 阅读全文
posted @ 2018-01-25 20:30 zzfx 阅读(297) 评论(0) 推荐(0)
摘要: pthreads defines a set of C programming language types, functions and constants. It is implemented with a pthread.h header and a thread library. There 阅读全文
posted @ 2018-01-25 17:13 zzfx 阅读(187) 评论(0) 推荐(0)
摘要: 多线程设计模式:1.Single Threaded Execution Pattern [同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。 2.Immutable Pattern 阅读全文
posted @ 2018-01-25 17:02 zzfx 阅读(4061) 评论(0) 推荐(1)
摘要: 1)独占唯一资源; 2)队列维护的资源; 3)数组维护类资源; 4)状态流程类数据; 阅读全文
posted @ 2018-01-25 11:56 zzfx 阅读(315) 评论(0) 推荐(0)