- About C++ and real-time OSs... - 3 Updates
Ramine <toto1@toto1.net>: Apr 02 05:13PM -0400 Hello, I have been working on a queue with a condition variable, but i have noticed that a condition variable does not work correctly, because the threads must be waiting to be able to be signaled, if they are not waiting the signal will be lost, so the way that many are using a condition variable with a FIFO queue is not correct, they are for example using this logic on the consumer side: while(the_queue.empty()) { the_condition_variable.wait(lock); } and this is not correct, because if the_queue_empty() is true , and the last producer thread signals before the consumer thread is waiting for the condition variable , so this will deadlock, so i have avoided condition variables and i have designed and implemented an efficient real-time and thread-safe and bounded FIFO Queue and Stack an i am actually finishing them and they are working well, and i will soon posted them on internet. Thank you, Amine Moulay Ramdane. |
Ramine <toto1@toto1.net>: Apr 02 05:31PM -0400 On 4/2/2017 5:13 PM, Ramine wrote: > well, and i will soon posted them on internet. > Thank you, > Amine Moulay Ramdane. To solve this problem with a condition variable , of course the signaling of the condition variable must be inside the critical section of the producers. But there is still a problem, it is a problem with the latency in real-time systems, if you use only one pthreads mutex for the producer side and the consumer side , the latency will get much bigger, because the consumers have to wait for the producers in a FIFO priority manner, so you have to wrap the producer side inside another pthreads mutex to lower the latency for the condition variable case, or you have to use smartly a pthreads semaphore. Thank you, Amine Moulay Ramdane. |
Ramine <toto1@toto1.net>: Apr 02 06:09PM -0400 On 4/2/2017 5:31 PM, Ramine wrote: The problem with the latency on real-time systems, can be solved with the condition variable by using two pthreads mutexes, one for the consumer side, and one for the producer side, not just one as is using many. Thank you, Amine Moulay Ramdane. |
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page. To unsubscribe from this group and stop receiving emails from it send an email to comp.programming.threads+unsubscribe@googlegroups.com. |
No comments:
Post a Comment