Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Паралельна обробка однозв'язних кільцевих списків в пам'яті ОС Windows

Реферат Паралельна обробка однозв'язних кільцевих списків в пам'яті ОС Windows





n)// додавання вузла з number =

n в кінець списку

{fl = HeapLock (hp);// блокування доступу до купи списку інших

потоків (fl == 0)// якщо блокувати не вдалося

{<<"adding failed" <

} * p_new; _new = (pnode) HeapAlloc (hp, HEAP_ZERO_MEMORY, 10);

// виділення пам'яті в купі під новий вузол (p_new == NULL)// якщо виділити не удалосьfalse; _new-> number = n;// ініціалізація елементів узла_new-> next = pq- > beg;// оскільки додавання виробляється в кінець, то

покажчик на слід. вузол

// дорівнює вказівником на початок (pq-> nodes == 0)// якщо список ще порожній

{> beg = pq-> end = p_new; _new-> next = pq-> beg;

}// в іншому випадку

{> end-> next = p_new;> end = p_new;

}> nodes + +;// інкремент лічильника вузлів <

return true;

}

EraseElem (List * pq, HANDLE hp, int n)// видалення вузла з number = n

{fl = HeapLock (hp);// блокування доступу до купи списку інших

потоків (fl == 0)// якщо блокувати не вдалося

{<<"erase failed" <

} * curr; * lcurr; (pq-> nodes == 0)// якщо контактів немає

{<<"list is empty, erase failed" <

HeapUnlock (hp);// відміна блокування купи для інших потоковfalse;

} = pq-> beg;// в іншому випадку = pq-> end; (curr-> number == n)// якщо перший елемент - шуканий

{(pq-> nodes == 1)// при цьому єдиний

{> beg = NULL;// регенерація покажчиків і лічильника об'єктів у

списку

pq-> end = NULL;> nodes = 0;

HeapFree (hp, 0, curr);// звільнення блоку пам'яті <

}> next = curr-> next;// при цьому не єдиний> beg = curr-> next; (hp, 0, curr);// звільнення блоку пам'яті> nodes- -;// декремент лічильника об'єктів <

} (pq-> nodes == 1)// якщо елемент єдиний в списку і шуканим НЕ

є

{<<"there is no such node in list, erase failed" <

HeapUnlock (hp);// відміна блокування купи для інших потоків

return false;

} = curr; = curr-> next; (curr! = pq-> beg)// пошук елемента

{(curr-> number! = n)// якщо поточний не є шуканим - рухаємося


Назад | сторінка 7 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Програма для створення двозв'язних кільцевих списків
  • Реферат на тему: Організація списку за допомогою двійкового дерева
  • Реферат на тему: Пам'ятки природи, занесені до списку ЮНЕСКО
  • Реферат на тему: Розробка програми, що реалізує алгоритм двусвязного списку
  • Реферат на тему: Об'єктна реалізація поліморфного контейнера на основі лінійного списку