Related articles |
---|
Any book covers materials on implementing parallel/concurrent programm climber.cui@gmail.com (2007-08-28) |
Re: Any book covers materials on implementing parallel/concurrent prog mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2007-08-28) |
Re: Any book covers materials on implementing parallel/concurrent prog climber.cui@gmail.com (2007-08-29) |
Re: Any book covers materials on implementing parallel/concurrent prog mrd@cs.cmu.edu (Matthew Danish) (2007-08-31) |
From: | climber.cui@gmail.com |
Newsgroups: | comp.compilers |
Date: | Tue, 28 Aug 2007 09:09:14 -0700 |
Organization: | Compilers Central |
Keywords: | parallel, question |
Posted-Date: | 28 Aug 2007 15:49:51 EDT |
Hi ALL,
I am working on my master thesis now. Its main task is to design
simple concurrent programming language, and then develop a compiler
that produce assembly code. Rather than using existing Pthread
library, I am going to do it from 'scratch', because we want to
achieve reasonable performance.
The language design is nearly finished, we extend Pascal with Box
type and actions, each box is very similar to a monitor with the
exception that actions defined within a box runs autonomously, a piece
of code from the Dining-philosopher program is attached below.
I have done some research, and checked several books and other
languages' implemenations. The only two books briefly discussing
implementing concurrent language are:
"Modern compiler design" and "programming language pragmatics".
I was wondering if there are better books for this particular
subject under the compiler context. Or, do you think these two books
should be sufficient by themself?
Any suggestions?
thanks.
tony
======================================================
type
box Philosopher (Index: integer);
const
LIMIT=5 : integer;
var
times_eaten: integer;
proc Say(msg:String)
begin
writeln("Philosopher", Index, msg);
end
action start
begin
for times_eaten=1 to LIMIT loop
butler.Enter_sitdown;
F(Index + 1).Pick_Up;
Say ("has right fork and is waiting for left");
F(Index).Pick_Up;
Say ("got the left fork and is eating");
F(Index + 1).Put_Down;
F(Index).Put_Down;
Say ("has put down the fork and is leaving the table");
if butler.occupants>3 then
begin Host.Getup_leave; Say("has putdown the forks and left --
>"); end;
end loop;
Say ("is dead");
end;
begin
times_eaten:=0;
end Philosopher;
Return to the
comp.compilers page.
Search the
comp.compilers archives again.