Final 16 de Noviembre de 2017
De Cuba-Wiki
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.