On 2015-03-17, Grant Edwards <grant.b.edwa...@gmail.com> wrote: > On 2015-03-17, lesc <l...@zhaw.ch> wrote: >> >> >> On 16.03.2015 18:17, Grant Edwards wrote: >>> Once again, I find I need a binary semaphore for a C application I'm >>> porting from another OS. > >> And just using a mutex is not a option? (Sorry if you allready ruled >> that out, but you didn't metion why youd need that specific >> sync-mechanism). > > The Semaphore is used so that one thread can wait for completion of a > task that was farmed out to different thread: Thread A waits on the > semaphore until thread B posts. It's an inter-thread signalling > mechanism, not a mutual-exclusion mechansim.
Perhaps I should be a bit more detailed: a Mutex is owned by the thread that calls cyg_mytex_lock(), and it can't be unlocked by a different thread. This enforcement of ownership prevents a mutex from being used in place of a binary semaphore for inter-thread signalling. I've run across situations in the past where I needed to use a semaphore for mutual exclusion, but a counting semaphore initialized to 1 works fine for that as long as you only release the resource once after acquiring it (not usually a problem). -- Grant Edwards grant.b.edwards Yow! World War III? at No thanks! gmail.com -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss