home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
- Errata for changes to Chapter 9 version 21
-
-
-
-
- 9 (paragraph 5)9 (paragraph 5)9 (paragraph 5)
-
-
- Parallel tasks (parallel logical processors) may be implemented on multicomputers,
- multiprocessors, or with interleaved execution on a single physical________ processor_________. On the other hand,
- whenever an implementation can detect that the same effect can be guaranteed if parts of the
- actions of a given task are executed by different physical processors acting in parallel, it may
- choose to execute them in this way; in such a case, several physical processors implement a
- single logical processor.
-
-
-
-
- 9 (paragraph 6)9 (paragraph 6)9 (paragraph 6)
-
-
- References:___________ abort statement 9.10, accept statement 9.5, delay statement 9.6, entry 9.5, entry call
- statement 9.5, generic unit 12, package 7, parameter in an entry call 9.5, program unit 6,
- rendezvous 9.5, select statement 9.7, subprogram 6, task body 9.1, task specification 9.1
-
-
-
-
- 9.1 Task Specifications and Task Bodies (paragraph 4)9.1 Task Specifications and Task Bodies (paragraph 4)9.1 Task Specifications and Task Bodies (paragraph 4)
-
-
- The simple name at the start of a task body must repeat the task unit identifier. Similarly if a
- simple name appears at the end of the task specification or body, it must repeat the task unit
- identifier. Within a task body, the name of the corresponding task unit can also be used to refer
- to the task object that designates the task currently executing the body; furthermore, the use of
- this name as a type mark is not allowed within the task unit itself.
-
-
-
- 9.2 Task Types and Task objects (paragraph 1)9.2 Task Types and Task objects (paragraph 1)9.2 Task Types and Task objects (paragraph 1)
-
-
- A task type is a limited type (see 7.4.4). Hence neither assignment nor the predefined comparison
- for equality and inequality are defined for objects of task types; moreover, the mode outoutout is not
- allowed for a formal parameter whose type is a task type.
-
-
-
- 9.3 Task Execution - Task Activation (paragraph 3)9.3 Task Execution - Task Activation (paragraph 3)9.3 Task Execution - Task Activation (paragraph 3)
-
-
- Should an exception be raised by the activation of one of these tasks, that task becomes a
- completed task (see 9.4); other tasks are not directly affected. Should one of these tasks thus
- become completed during its activation, the exception TASKING_ERROR is raised upon conclusion of
- the activation of all of these tasks (whether successfully or not); the exception is raised at a
- place that is immediately before the first statement following the declarative part (immediately
- after the reserved word beginbeginbegin). Should several of these tasks thus become completed during their
- activation, the exception TASKING_ERROR is raised only once.
-
-
-
- -1 Task Execution - Task Activation (paragraph 3) 9.3
-
-
-
-
- 9.3 Task Execution - Task Activation (paragraph 4)9.3 Task Execution - Task Activation (paragraph 4)9.3 Task Execution - Task Activation (paragraph 4)
-
-
- Should an exception be raised by the elaboration of a declarative part or package specification,
- then any task that is created (directly or indirectly) by this elaboration and that is not yet
- activated becomes terminated and is therefore never activated (see section 9.4 for the definition
- of a terminated task).
-
-
-
- 9.4 Task Dependence - Termination of Tasks (paragraph 4)9.4 Task Dependence - Termination of Tasks (paragraph 4)9.4 Task Dependence - Termination of Tasks (paragraph 4)
-
-
- Furthermore, if a task depends on a given master that is a block statement executed by another
- master, then the task depends also on this other master, in an indirect manner; the same holds if
- the given master is a subprogram called by another master, and if the given master is a task that
- depends (directly or indirectly) on another master. Dependences exist for objects of a private
- type whose full declaration is in terms of a task type.
-
-
-
-
- 9.4 Task Dependence - Termination of Tasks (paragraph 14)9.4 Task Dependence - Termination of Tasks (paragraph 14)9.4 Task Dependence - Termination of Tasks (paragraph 14)
-
-
- For an access type derived from another access type, the corresponding access type definition is
- that of the parent type; the dependence is on the master that elaborates the ultimate parent
- access type definition.
-
-
-
- 9.5 Entries, Entry Calls, and Accept Statements (paragraph 10)9.5 Entries, Entry Calls, and Accept Statements (paragraph 10)9.5 Entries, Entry Calls, and Accept Statements (paragraph 10)
-
-
- Execution of an accept statement starts with the evaluation of the entry index (in the case of an
- entry of a family). Execution of an entry call statement starts with the evaluation of the entry
- name; this is followed by any evaluations required for actual parameters in the same manner as
- for a subprogram call (see 6.4). Further execution of an accept statement and of a corresponding
- entry call statement are synchronized.
-
-
-
- 9.5 Entries, Entry Calls, and Accept Statements 9.5 (paragraph 22)9.5 Entries, Entry Calls, and Accept Statements 9.5 (paragraph 22)9.5 Entries, Entry Calls, and Accept Statements 9.5 (paragraph 22)
-
-
- If the bounds of the discrete range of an entry family are integer literals, the index (in an
- entry name or accept statement) must be of the predefined type INTEGER (see 3.6.1).
-
-
-
-
- 9.7.1 Selective Waits 9.7.1 (paragraph 15)9.7.1 Selective Waits 9.7.1 (paragraph 15)9.7.1 Selective Waits 9.7.1 (paragraph 15)
-
-
- References:___________ accept statement 9.5, condition 5.3, declaration 3.1, delay expression 9.6, delay
- statement 9.6, duration 9.6, entry 9.5, entry call 9.5, entry index 9.5, program_error exception
- 11.1, queued entry call 9.5, rendezvous 9.5, select statement 9.7, sequence of statements 5.1,
- task 9
-
-
-
- 9.7.1 Selective Waits 9.7.1 (paragraph 15) -2
-
-
-
-
-
-
-
- 9.10 Abort Statements (paragraph 5)9.10 Abort Statements (paragraph 5)9.10 Abort Statements (paragraph 5)
-
-
- Any abnormal task whose execution is suspended at an accept statement, a select statement, or a
- delay statement becomes completed; any abnormal task whose execution is suspended at an entry
- call, and that is not yet in a corresponding rendezvous, becomes completed and is removed from the
- entry queue; any abnormal task that has not yet started its activation becomes completed (and
- hence also terminated). This completes the execution of the abort statement.
-
-
-
- 9.10 Abort Statements (paragraph 6)9.10 Abort Statements (paragraph 6)9.10 Abort Statements (paragraph 6)
-
-
- The completion of any other abnormal task need not happen before completion of the abort
- statement. It must happen no later than when the abnormal task reaches a synchronization point
- that is one of the following: the end of its activation; a point where it causes the activation
- of another task; an entry call; the start or the end of an accept statement; a select statement;
- a delay statement; an exception handler; or an abort statement. If a task that calls an entry
- becomes abnormal while in a rendezvous, its termination does not take place before the completion
- of the rendezvous (see 11.5).
-
-
-
- 9.10 Abort Statements (paragraph 7)9.10 Abort Statements (paragraph 7)9.10 Abort Statements (paragraph 7)
-
-
- The call of an entry of an abnormal task raises the exception TASKING_ERROR at the place of the
- call. Similarly, the exception TASKING_ERROR is raised for any task that has called an entry of
- an abnormal task, if the entry call is still queued or if the rendezvous is not yet finished
- (whether the entry call is an entry call statement, or a conditional or timed entry call); the
- exception is raised no later than the completion of the abnormal task. The value of the attribute
- CALLABLE is FALSE for any task that is abnormal (or completed).
-
-
-
- 9.10 Abort Statements (pargraph 8 -new)9.10 Abort Statements (pargraph 8 -new)9.10 Abort Statements (pargraph 8 -new)
-
-
- If the abnormal completion of a task takes place while the task updates a variable, then the value
- of this variable is undefined.
-
-
-
- 9.11 Shared Variables (paragraphs 4 5)9.11 Shared Variables (paragraphs 4 5)9.11 Shared Variables (paragraphs 4 5)
-
-
-
- - If between two synchronization points of a task, this task reads a shared variable whose type
- is a scalar or access type, then the variable is not updated by any other task at any time
- between these two points.
-
- - If between two synchronization points of a task, this task updates a shared variable whose
- type is a scalar or access type, then the variable is neither read nor updated by any other
- task at any time between these two points.
-
-
-
- -3 Shared Variables (paragraphs 4 5) 9.11
-
-
-
-
- 9.11 Shared Variables (paragraph 10)9.11 Shared Variables (paragraph 10)9.11 Shared Variables (paragraph 10)
-
-
- This pragma is allowed only for a variable declared by an object declaration and whose type is a
- scalar or access type; the variable declaration and the pragma must both occur (in this order)
- immediately within the same declarative part or package specification; the pragma must appear
- before any occurrence of the name of the variable, other than in an address clause.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 9.11 Shared Variables (paragraph 10) -4
-