需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程。如果X的线程试图调用Y的同步方法,它将像预料的一样被锁定。而Y的线程同样希望调用X的一些同步方法,线程永远等待,...
分类:
编程语言 时间:
2015-05-16 09:03:30
阅读次数:
129
上述例题无条件的阻塞了其他线程异步访问某个方法。Java对象中隐式管程的应用是很强大的,但是你可以通过进程间通信达到更微妙的境界。这在Java中是尤为简单的。像前面所讨论过的,多线程通过把任务分成离散的和合乎逻辑的单元代替了事件循环程序。线程还有第二优点:它远离了轮询。轮询通常由重复监测条件的循环实...
分类:
编程语言 时间:
2015-05-15 09:01:34
阅读次数:
169
1.简介在.NET平台,微软为C#或托管C++程序员提供了丰富的类库,用以支持各种需求,其中就有对XML文件操作的丰富的类。例如XMLDocument, XmlElement等。但是C++标准库中并未提供相应的库。本地开发的C++程序员一般采用开源类库实现对XML文件的操作,例如比较优秀的TinyX...
分类:
其他好文 时间:
2015-05-14 23:18:53
阅读次数:
160
原文链接
作者:Jakob Jenkov
译者:余绍亮 校对:丁一
嵌套管程锁死类似于死锁,
下面是一个嵌套管程锁死的场景
线程1获得A对象的锁。
线程1获得对象B的锁(同时持有对象A的锁)。
线程1决定等待另一个线程的信号再继续。
线程1调用B.wait(),从而释放了B对象上的锁,但仍然持有对象A的锁。
...
分类:
编程语言 时间:
2015-05-14 10:03:06
阅读次数:
189
当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用。达到此目的的过程叫做同步(synchronization)。像你所看到的,Java为此提供了独特的,语言水平上的支持。同步的关键是管程(也叫信号量semaphore)的概念。管程是一个互斥独占锁定的对象,或称互斥...
分类:
编程语言 时间:
2015-05-14 08:35:41
阅读次数:
160
托管程序Visual Basic.net, 非托管DLL标准C++程序(使用VC++编译)函数调用定义第一种写法: Public Shared Function Xxxxx(ByVal arg0 As String, ByVal [arg] As Integer, By...
分类:
其他好文 时间:
2015-05-13 12:36:20
阅读次数:
94
??
一、进程
1、什么是进程
进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。
进程是程序的一次执行,该进程可以和其他进程并发执行。
2、为什么引入进程
程序并发执行的时候,需...
分类:
编程语言 时间:
2015-04-30 21:54:01
阅读次数:
185
尽管程序设计中不提倡使用goto语句,但是有的时候为了简化代码,难免会使用到goto。下面我要讨论的这个陷阱C语言程序中不会遇到,反而C++中稍不注意就会引起问题。
直接看以下代码:
int _tmain(int argc, _TCHAR* argv[])
{
int t1 = 1;
if (t1 >0)
{
goto __next;
}
int t2 = 5;...
分类:
编程语言 时间:
2015-04-16 17:37:46
阅读次数:
266
Hibernate 是一个优秀的ORM框架体现在:1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现...
分类:
Web程序 时间:
2015-03-12 06:19:57
阅读次数:
203
所有学习c++的书籍都明确提出了,不要使用goto,以免造成程序流程的混乱,使理解和调试程序都产生困难。但是我们遇到这样一个场景怎么办:就是不管程序执行成功与否,都要执行一些资源释放语句,相当java中的finally语句。c++的中没有finally的支持,即使使用try catch,资源释放也需...
分类:
编程语言 时间:
2015-02-09 14:02:58
阅读次数:
141