<p>Am 06.02.2013 20:24 schrieb "Graeme Geldenhuys" <<a href="mailto:graeme@geldenhuys.co.uk">graeme@geldenhuys.co.uk</a>>:<br>
><br>
> Hi,<br>
><br>
> OK, now that we established that semaphores are broken in FreeBSD using<br>
> FPC 2.6.0 and the upcoming FPC 2.6.2. I'm looking for an alternative.<br>
><br>
> An alternative for two reasons.<br>
>   - I hate IFDEF code, and the semaphore code between Linux, FreeBSD<br>
>     and Windows are different.<br>
>   - Semaphore sem_t structure is incorrectly defined for FreeBSD, so<br>
>     I'll have to implement a special case for that platform.</p>
<p>If you just define your own semaphore class that contains the platform specific types and lock and unlock methods then you only need to add an additional "array[0..4] of Longint" after the "sem_t" field for FreeBSD. Then you should be okay.</p>

<p>> Semaphore functionality seems pretty simple though, so I am thinking of<br>
> creating my own Object Pascal based cross-platform semaphore - no low<br>
> level code or OS specific library API's.</p>
<p>You need to use at least synchronisation primitives like mutexes otherwise it won't be threadsafe.</p>
<p>><br>
> It case I'm overlooking something critical, has anybody else done<br>
> something like this. If so, anybody willing to share that code - saving<br>
> me some time in developing, unit testing and debugging my own Object<br>
> Pascal based semaphore.</p>
<p>If you really want to do this the hard way you should read corresponding articles.</p>
<p>Regards,<br>
Sven</p>