LINUX.ORG.RU

История изменений

Исправление ls-h, (текущая версия) :

Не две очереди, двойная буферизация.
Первый поток заполняет буфер по указателю P, который указывает на буфер A. Как только заполнил, он выставляет указатель P2 на буфер A, делает нотификацию и меняет указатель P, теперь он указывает на буфер B.
Второй поток просыпается по нотификации и обрабатывает буфер по указателю P2.
Нужно, чтобы второй поток игнорировал пропущенные нотификации и ждал те, которые произойдут уже после того, как он заснул.

Исходная версия ls-h, :

Не очередь. Двойная буферизация.
Первый поток заполняет буфер по указателю P, который указывает на буфер A. Как только заполнил, он выставляет указатель P2 на буфер A, делает нотификацию и меняет указатель P, теперь он указывает на буфер B.
Второй поток просыпается по нотификации и обрабатывает буфер по указателю P2.
Нужно, чтобы второй поток игнорировал пропущенные нотификации и ждал те, которые произойдут уже после того, как он заснул.