-------- Original-Nachricht --------
> Von: Florian Klaempfl <[EMAIL PROTECTED]>
>
> Before we discuss endless about useless stuff, I'll make a proposal for 
> a first addition: support of the synchronized keyword. It does no more 
> than protecting a procedure automatically by a critical section so only 
> one thread can enter it. But I want to extend it. First, it can be 
> applied also to classes and object:
> 
> tmyclass = class(...) synchronized
> 
> This means that all classes synchronize against one critical section.

You mean:

1) All classes of the type (and descendants)?
2) Only the methods additionally marked with a "synchronized" statement?

3) Corollary: A critical section is either class wide or instance wide? 
Meaning: you can't possibly use both approaches at the same time? For instance, 
having some methods that are synchronized between all instances existing (class 
wide) _and_ another set of methods only synchronized on the instance?
If so, maybe the syntax below could be extended to specify how the 
synchronization should be done without the explicit use of another 
RTLCriticalSection? (Maybe "synchronized class" for the class-wide one, a 
simple "synchronized" for the instance-wide?)

OTOH, it's looks about the same as in Java and even Java now has explicit 
Locks, because "synchronized" simply isn't efficient nor flexible enough... ;)

> Besides saving the typing of endless try ... finally statements and the 
> initialiation of the unnamed critical sections, it creates also slightly 
> better code because the LeaveCriticalSection call can be inside the 
> implicit exception frame which is created anyways.

Hmm. Depends on the code. ;)

> Any suggestions about doing it better?

Warnings, if you use potentially blocking functions inside a synchronized 
method? ;)

Like:

|procedure My_Thread.Do_Work; synchronized;
|begin
|   ...
|   Suspend;
|end; 

Well, I guess the compiler doesn't know which operations are potentially 
blocking, does it?


Vinzent.

-- 
GMX startet ShortView.de. Hier findest Du Leute mit Deinen Interessen!
Jetzt dabei sein: http://www.shortview.de/[EMAIL PROTECTED]
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to