| 
			 
					阅读:2201回复:5
				 
				何谓“不可重入”
					 “当一个VxD程序在处理一个硬件中断时,由于VMM是不可重入的,这个VxD程序不能使用VxD服务,否则会引起页面错误(重入VMM)。”
 
							这是罗云斌教程的一句原话。 如何理解“不可重入”?  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2001-08-22 14:49				
			用户被禁言,该主题自动屏蔽! 				 | 
	|
| 
			 板凳# 
								发布于:2001-08-28 12:29				
			
					所谓不可重入,是相对于可重入而言的,指的是这段函数可以被中断。有些程序中由于使用了全局的数据结构或必须在一定的情况下执行,不允许其他程序中断它。				 
							 | 
	|
					
						
  | 
	
| 
			 地板# 
								发布于:2001-09-03 15:14				
			
					当不可重入的代码被重入时,重入前储存的数据在重入时被覆盖破坏。当再执行被中断的代码时,由于代码处理的数据不正确,于是引起了错误。				 
							 | 
	|
| 
			 地下室# 
								发布于:2001-09-07 16:37				
			
					谢谢楼上两位的回答。我认为:中断是指一段程序代码的执行打断另一段程序代码的执行,而“重入”特指两段代码相同的情况,是这样的吗?另外,是否有防止不可重入的代码被重入的机制?				 
							 | 
	|
| 
			 5楼# 
								发布于:2001-09-07 17:06				
			
					简单,你设一个标记,进去是先检查是否有程序调用了该函数还没有返回.如是,就等候或返回; 如否,就设置标记,继续运行,运行完毕,清除标记...
 
							偶在DOS下做时钟中断时,就用了这个方法.  | 
	|
					
						
  |