a745c072

Remove_from_queue


Последней примитивной операцией над очередями struct sem_queue является именно эта, в которой выполняется удаление узла из очереди.

Частично удаляет q из очереди путем изменения указателя next предыдущего узла очереди.

Обновляет также указатель prev следующего узла, если он есть, или sma->sem_pending_last, если это— последний узел в очереди. Обратите внимание, что нет явного кода для удаления единственного узла очереди; вам следует выделить время, чтобы разобраться в том, почему и этот случай работает, если вы еще этого не сделали.

Устанавливает указатель prev удаленного узла в NULL, чтобы код в строках и позволял эффективно обнаружить, находится ли все еще в очереди этот узел.



Содержание раздела