What to do to get round the lack of events?

paulgcoleman wrote on Tuesday, February 28, 2012:

The other day I had a situation where events would have made my life easier… I wanted to wait for three separate threads to reach a particular state before I continued. I didn’t know what order the threads would occur in and it could be different each time. Being new to FreeRTOS I started looking in the manual for the section on events only to find that it doesn’t support them. So I got round it by using a counting semaphore which the main thread takes three times, then in each of the other three threads I give the semaphore once. Only when the semaphore has been given three times will the main thread continue. This solved my problem but I was wondering if there was a better way I could have achieved this?

Thanks, Paul.

richard_damon wrote on Tuesday, February 28, 2012:

There normally is nothing wrong in waiting first for thread1, then thread2, then thread3. If thread3 finishes first, it just says that the wait for it will return immediately.

paulgcoleman wrote on Wednesday, February 29, 2012:

Yes that’s a fair point but it just seemed easier to create one counting semaphore rather than three binary ones. Less resources and less to keep track of :o)


richard_damon wrote on Wednesday, February 29, 2012:

As long as you have other synchronizations going so task1 can’t give the semaphore twice before task3 gives it once!