以对象管理资源资源的种类很多,动态分配的内存、文件描述器、互斥锁、图像界面中画刷、数据库连接、网络socket等。资源一般是有限的,当你不用时,必须释放。不然就会造成资源浪费,更严重的情况下,非法占有所有资源导致程序崩溃。那么我们怎么样才能合理使用资源?换句话说我们应该怎么样才能做到资源的释放?
本节的核心点是:利用析构函数自动调用机制实现资源的合理释放。举个例子:class Investment...
分类:
编程语言 时间:
2015-06-24 10:59:50
阅读次数:
153
与互斥量一样使应用程序在获取读写锁时避免陷入永久阻塞状态。这两个函数是#include #include int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rwlock, ...
分类:
其他好文 时间:
2015-06-23 19:57:37
阅读次数:
155
函数pthread_mutex_timedlock当线程试图获取一个已加锁的互斥变量时,pthread_mutex_timedlock互斥量原语允许绑定线程阻塞的时间。pthread_mutex_timedlock函数与pthread_mutex_lock是基本等价的,但是在达到超时时间值时,pth...
分类:
其他好文 时间:
2015-06-23 19:42:58
阅读次数:
121
当同个对象上有互斥的锁存在时,查询需要等待很长时间,我们是否可以收到来自SQL Server提醒?答案是可以的,做法非常简单,因为SQL Server为你提供了称为Blocked Process Report 的功能。很可惜这个功能默认是未启用的。因此这篇文章我想给你讲解下Blocked Proce...
分类:
其他好文 时间:
2015-06-23 15:26:29
阅读次数:
130
操作系统概念学习笔记 12=======进程同步(二)管程基本的、高级的同步构造,即管程(monitor)类型。使用:管程类型提供了一组由程序员定义的、在管程内互斥的操作。管程类型的表示包括一组变量的声明(这些变量的值定义了一个类型实例的状态)和对这些变量操作的子程序和函数的实现。管程的类型表示不能直接为各个进程所使用。因此,在管程内定义的子程序只能访问位于管程内那些局部声明的变量和形式参数。类似的...
分类:
系统相关 时间:
2015-06-18 11:37:34
阅读次数:
139
前一篇介绍的条件变量可以进行进程间通信,用来实现生产者/消费者模型。今天介绍的共享互斥量用来实现缓冲区读写模型,与生产者/消费者模型不同的地方是,消费者消费产品后,被消费的产品就不存在了,所以消费者线程也要互斥运行;而缓冲区读取线程读取数据后不删除数据,多个线程可以并行读取。这时使用条件变量也不合适了,就要使用共享互斥变量了。
共享互斥量,顾名思义,既共享,也互斥,读线程之间共享...
分类:
其他好文 时间:
2015-06-18 09:40:58
阅读次数:
190
锁提供了两种主要特性:互斥(mutual exclusion)?和可见性(visibility)。 互斥:即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该...
分类:
编程语言 时间:
2015-06-17 15:30:55
阅读次数:
121
这个系列其实是《Boost程序库完全开发指南》的读书笔记。按照书中的方法代码没跑起来,所以转到Ubuntu下学习了。boost库在Ubuntu下的安装,直接用apt-get install命令安装就可以了,需要安装libboost-dev libboost-system libboost-thread
我们直接上代码,通过讲解代码来学习。一方面,更详细的内容请参看原书,在此不作重...
分类:
其他好文 时间:
2015-06-17 09:40:13
阅读次数:
411
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内...
分类:
系统相关 时间:
2015-06-16 14:20:57
阅读次数:
179
摘要:并发控制,是多任务操作系统必须面临和解决的一个问题。并发与互斥,主要是用于保护临界资源,如果不站在操作系统进程调度的角度,就很难理解并发与互斥的概念和应用。无论是抢占式操作系统,还是分时操作系统,对于临界资源的保护,都必须采用互斥的机制。Linux内核中,有多种并发控制的机制:自旋锁、原子变量、信号量、读写锁等等。不同的并发机制对应于不同的应用场合,比如说,自旋锁可以应用到中断处理函数中,信号量则不可以。本文主要从一个globalmem_lock例子来阐述信号量的使用。注:该例子取自《Linux设备驱...
分类:
系统相关 时间:
2015-06-16 09:17:54
阅读次数:
263