On 30/07/2015 12:00, fpc-pascal-requ...@lists.freepascal.org wrote:
Date: Wed, 29 Jul 2015 17:05:03 +0200
From: Michael Schnell<mschn...@lumino.de>
To:fpc-pascal@lists.freepascal.org
Subject: Re: [fpc-pascal] Counting semaphore for free pascal
Message-ID:<55b8eb9f.6060...@lumino.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
On 07/29/2015 04:47 PM, Serguei TARASSOV wrote:
>
>I see you're using two concepts of synchronization (semaphore and
>events) at the same time.
>Maybe better to separate them?
>It is not clear why use events to limit thread access to service.
There are several implementation details a semaphore can have
- counting / not counting
What is "not counting semaphore"? Even a binary semaphore counts up to 1.
- if taken by a precess/thread will the same process/thread
block/count when it tries a second take ?
Yes, re-entrant / non re-entrant
- if taken by a precess/thread is a different process/thread allowed
to free it ?
AFAIK, it is a mutex that have notion of ownership but a semaphore is
not safe for such case.
- ...
Yes, there are multiple details depending on used scenarios that makes a
generic implementation complex and hard to use.
So my question was to clarify the goals of the posted code.
I.e. a sleeping lock semaphore is expensive and is not appropriate in
case of many short requests that is typically for multithreading
applications.
However, I could share some simple semaphore implementation for
non-sleeping and non-reentrant scenario.
Regards,
Serguei
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal