Estoy adquiriendo algunos recursos en orden creciente. ¿Qué versión es mejor? Me dijeron que # 2 conduce a la inanición de los hilos que desean recursos de mayor número. ¿Es esto cierto? Si es así, ¿cómo y por qué?Adquisición de recursos y pthreads
a[] sorted array
1.
for(int i = 1; i < N; ++i) {
lock(mutex)
while(!resource_available[a[i]]) {
pthread_cond_wait(&cond_w[a[i]], &mutex);
}
resource_available[a[i]] = 0;
unlock(mutex)
}
2.
lock(mutex)
for(int i = 1; i < N; ++i) {
while(!resource_available[a[i]]) {
pthread_cond_wait(&cond_w[a[i]], &mutex);
}
resource_available[a[i]] = 0;
}
unlock(mutex)
EDIT: Resulta que el orden en el que se libera recursos que hace la diferencia, no construcciones anteriores. Si los libera para que los haya recibido, la inanición ocurre, si es opuesta, entonces probablemente no.
¿No debería haber una llamada a 'acquire_resource (a [i])' allí? – caf
Agregué adquisición. – niteria
http://stackoverflow.com/questions/1162587/what-is-starvation una definición de inanición – niteria