void dequeue ()
{
QITEM *qKill = qHead;
.
.
.
#pragma omp critical
qHead = qHead->qNext;
free(qKill);
}
void enqueue (int iNode, int iDist, int iPrev)
{
.
.
.
QITEM *qLast = qHead;
#pragma omp critical
{
while (qLast->qNext) qLast = qLast->qNext;
qLast->qNext = qNew;
}
}
Я знаю, что если только один поток может получить доступ к критической секции в очереди и очереди.
Однако, если один поток обращается к критической секции в очереди, а другой поток обращается к критической секциив этом случае этот код должным образом защищает общий список?
qHead - указатель на заголовок связанного списка.