Diferencia entre revisiones de «Final 16 de Noviembre de 2017»
De Cuba-Wiki
(Página creada con «== CAS == 1. Explicar compareAndSwap y demostrar que su numero de consenso es <math>\infty</math> 2. Desarrollar ReentrantLock que soporte locks recursivos == COMMIT == 1....») |
(→CAS) |
||
Línea 1: | Línea 1: | ||
== CAS == | == CAS == | ||
1. Explicar compareAndSwap y demostrar que su numero de consenso es <math>\infty</math> | 1. Explicar compareAndSwap y demostrar que su numero de consenso es <math>\infty</math> | ||
2. Desarrollar ReentrantLock que soporte locks recursivos | 2. Desarrollar ReentrantLock que soporte locks recursivos | ||
Revisión actual - 08:09 17 nov 2017
CAS[editar]
1. Explicar compareAndSwap y demostrar que su numero de consenso es
2. Desarrollar ReentrantLock que soporte locks recursivos
COMMIT[editar]
1. Definir el problema de consenso COMMIT sin fallas
2. Dar una solución
SETUID[editar]
Explicar que es el bit de SETUID. Dar un ejemplo de uso.
FIFO Queue[editar]
1. Explicar por qué la implementación de una cola FIFO no es correcta.
atomic<int> tail, head = 0; int capacidad = N; T[] items = new T[N]; void queue(x){ assert(!full()); items[tail.getAndInc() % capacidad] = x; } T deque(){ assert(!empty()); T x = items[head.getAndInc() % capacidad]; return x; } bool full(){return tail.get() - head.get() == capacity}; bool empty(){return tail.get() - head.get() == 0};
2. Dar una implementación correcta wait-free para 1 productor y 1 consumidor.