Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция-8.pptx
Скачиваний:
5
Добавлен:
01.10.2022
Размер:
194.87 Кб
Скачать

Рекурсивные и не рекурсивные

мьютексы

DEADLO

mutex m;

class concurrentList<T> {

 

public void append(T value) {

 

m.lock();

 

if (getSize() > 10) resize();

 

//

 

m.unlock();

 

}

 

public int getSize() {

 

m.lock();

 

//

 

m.unlock();

 

}

 

}

 

Рекурсивные и не рекурсивные

мьютексы

class concurrentList<T> {

recursive_mutex m;

public void append(T value) { m.lock();

if (getSize() > 10) resize();

//

m.unlock();

}

public int getSize() { m.lock();

//

m.unlock();

}

}

Рекурсивные и не рекурсивные

мьютексы

class concurrentList<T> { mutex m;

public void append(T value) { m.lock();

unsafe_append(T value);

m.unlock();

}

public int getSize() {

m.lock(); }

unsafe_getSize();

m.unlock();

}

void unsafe_append(T value) {

if (unsafe_getSize() > 10) resize();

//

}

int unsafe_getSize() {

//

}

Shared mutex

 

 

 

 

 

 

 

 

 

 

T1

T2

T3

T4

T5

T6

T7

T8

T9

T1

 

 

 

 

 

 

 

 

 

0

w

r

r

r

w

r

w

r

r

r

 

 

 

 

 

 

 

 

 

 

T1

T2

T3

T4

T5

T6

T7

T8

T9

T1

 

 

 

 

 

 

 

 

 

0

w

r

r

r

w

r

w

r

r

r

Shared mutex

class concurrentList<T> { shared_mutex m;

public void append(T value) { m.lock(); unsafe_append(T value); m.unlock();

}

public int getSize() {

m.lock_shared();

unsafe_getSize();

}

m.unlock();

 

}

 

void unsafe_append(T value) {

if (unsafe_getSize() > 10) resize();

//

}

int unsafe_getSize() {

//

}

Соседние файлы в предмете Операционные системы