Hi,   
 
you have changed the semaphore to a synchronisation event. If all worker threads have a job and there are put more than one new job in the queue, only one of the jobs is delivered to the workers. The first empty worker removes one job. The event is never signaled again. All other jobs are never delivered to the workers. Compiling ros on ros isn't the real problem. I use three pc for testing. On two pc I can compile ros on ros without any problems. The third pc is a smp machine. On my third pc, the problem is somewhere in the smp code (and in many of my not commited changes).   
 
- Hartmut
-----Original Message-----
From: ros-dev-bounces@reactos.com [mailto:ros-dev-bounces@reactos.com] On Behalf Of Gunnar Dalsnes
Sent: Tuesday, November 16, 2004 9:30 PM
To: 'ReactOS Development List'
Subject: RE: [ros-dev] RE: [ros-diffs] [CVS reactos] fix broken work item impl.

I don't understand why you think my changes are not correct?
 
The previous impl. crashed when compiling ros-on-ros, due to semaphore limit overflow and increasing the limit would only be a dirty hack. The semaphore was not the right tool for this job.
 
Gunnar
 
-----Original Message-----
From: ros-dev-bounces@reactos.com [mailto:ros-dev-bounces@reactos.com] On Behalf Of Hartmut Birr
Sent: Tuesday, November 16, 2004 6:39 PM
To: ReactOS Development List
Subject: [ros-dev] RE: [ros-diffs] [CVS reactos] fix broken work item impl.

Hi Gunnar,
 
for synchronisation between an unlimited count of objects (or 256) in a wait queue and more than one waiters which removes this objects, there _must_ be used a semaphore (or equivalent code). Please revert your changes.