mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-16 03:57:34 +08:00
blockingqueue.hpp: Fix sem_wait not blocking if task is signaled
sem_wait() can be interrupted if the task receives a signal, however the blockinglist implementation depends on blocking until the semaphore can be obtained.
This commit is contained in:
@@ -56,7 +56,7 @@ public:
|
||||
|
||||
void push(T newItem)
|
||||
{
|
||||
px4_sem_wait(&_sem_head);
|
||||
do {} while (px4_sem_wait(&_sem_head) != 0);
|
||||
|
||||
_data[_tail] = newItem;
|
||||
_tail = (_tail + 1) % N;
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
|
||||
T pop()
|
||||
{
|
||||
px4_sem_wait(&_sem_tail);
|
||||
do {} while (px4_sem_wait(&_sem_tail) != 0);
|
||||
|
||||
T ret = _data[_head];
|
||||
_head = (_head + 1) % N;
|
||||
|
||||
Reference in New Issue
Block a user