te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>操作系统:4、进程管理之进程同步
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

操作系统:4、进程管理之进程同步

运维笔记admin3浏览0评论

操作系统:4、进程管理之进程同步

  • 1、为什么需要进程间同步
    • 生产者消费者问题
    • 哲学家进餐问题
    • 进程间同步解决生产者消费者、哲学家进餐问题
  • 2、进程间同步的原则
  • 3、线程同步

1、为什么需要进程间同步

生产者消费者问题



上述过程,若并发执行就会出现缓冲区数据出错

哲学家进餐问题



“哲学家进餐问题中会发生极端情况,所有哲学家都饿死,也就是所有进程都陷入等待状态”

进程间同步解决生产者消费者、哲学家进餐问题

“生产者消费者问题”以及“哲学家进程问题”的根源问题是:彼此相互之间没有通信。
若生产者通知消费者我已经完成一件产品生产哲学家向旁边的哲学家说我要进餐了你们别拿我的筷子,那么就不会发生上述的缓冲区数据错误以及哲学家全部饿死的情况。

因此需要进程间的同步。

进程间同步的根源需求:
1、对竞争资源在多个进程间进行使用次序的协调(比如先让第一个哲学家吃,再让第二个哲学家吃);
2、使得并发执行的多个进程之间可以有效使用资源和相互合作;

2、进程间同步的原则

临界资源:
临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。
当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。

进程间同步的四原则:
1、空闲让进:资源无占用,允许使用

临界资源无占用,操作系统应该允许某进程使用临界资源

2、忙则等待:资源有占用,请求进程等待

如果有进程占用了临界资源,此时要防止其他要使用资源的进程继续使用资源,应该让其他进程等待,等占用进程释放,其他进程才可继续使用

3、有限等待:保证有限等待时间能够使用资源

保证等待进程在有限时间内能够使用资源,避免进程僵死

4、让权等待:等待时,进程需要让出CPU

当外面需要等待的进程等待时,等待进程应该让出CPU

进程间同步方法:
1、消息队列
2、共享存储
3、信号量

3、线程同步

多个线程并发使用进程资源时,也会发生生产者消费者问题,所以进程内多线程也需要同步。

线程同步方法:
1、使用互斥量(保证多线程能够互斥的使用临界资源的锁)
2、读写锁(应对多读少写,或者多写少读的情况发明的锁)
3、自旋锁
4、条件变量

发布评论

评论列表(0)

  1. 暂无评论