H.5 Pragma Detect_Blocking
{
AI95-00305-01} 
{
AI12-0267-1} 
The following 
pragma 
requires an implementation to detect potentially blocking operations 
during the execution of a protected operation or a parallel construct. 
 
Syntax
Post-Compilation Rules
Dynamic Semantics
{
AI95-00305-01} 
{
AI12-0247-1} 
{
AI12-0267-1} 
An implementation is required to detect a potentially blocking operation 
that occurs during the execution of a protected operation or a parallel 
construct defined within a compilation unit to which the pragma applies, 
and to raise
 Program_Error (see 
9.5). 
 
Implementation Permissions
{
AI95-00305-01} 
{
AI12-0267-1} 
An implementation is allowed to reject a 
compilation_unit 
to which a pragma Detect_Blocking applies if a potentially blocking operation 
is present directly within an 
entry_body, 
the body of a protected subprogram, or a parallel construct occurring 
within the compilation unit. 
 
NOTE   {
AI95-00305-01} 
{
AI12-0442-1} 
An operation that causes a task to be blocked within a foreign language 
domain is not defined to be potentially blocking, and is unlikely to 
be detected. 
 
Extensions to Ada 95
Extensions to Ada 2012
{
AI12-0267-1} 
Pragma Detect_Blocking now applies to parallel constructs 
as well as protected actions. 
 
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe