-- Code of Figure 14.12, pages 659-660 from -- Kenneth C. Louden, Programming Languages -- Principles and Practice 2nd Edition -- Copyright (C) Brooks-Cole/ITP, 2003 -- Parallel Integer Matrix Multiplication -- Package Body package body IntMatrices is function ParMult(a,b: in IntMatrix) return IntMatrix is c:IntMatrix; task type Mult is entry DoRow (i: in INTEGER); end; task body Mult is iloc: INTEGER; begin accept DoRow (i: in INTEGER) do iloc := i; end; for j in 1..Size loop c(iloc, j) := 0; for k in 1..Size loop c(iloc, j) := c(iloc,j) + a(iloc,k) * b(k,j); end loop; end loop; end Mult; begin -- ParMult declare m: array (1..Size) of Mult; begin for i in 1..Size loop m(i).DoRow(i); end loop; end; return c; end ParMult; end IntMatrices;