race condition

1
Race Condition También llamada “condición de competencia” es una expresión usada en programación que se usa para referirse a cuando múltiples procesos acceden al mismo tiempo y cambian el estado de un recurso compartido (por ejemplo una variable), obteniendo de esta forma un valor no esperado de ese recurso. Existe una "condición de carrera" cuando multihilo código (o de otro modo paralelo) que acceder a un recurso compartido podría hacerlo de tal manera como para causar resultados inesperados. En el siguiente seudocódigo podemos apreciar un programa de productor-consumidor implementado con monitores, en él se aprecia que tiene las operaciones WAIT y SIGNAL (monitores). El uso de la sentencia while cuando se comprueba si el buffer está lleno o vacío con múltiples consumidores hay un race condition, cuando un consumidor es notificado que un objeto ha sido puesto en el buffer pero otro consumidor que está esperando en el monitor lo extrae del buffer antes. Si en vez de una sentencia while se usan variables de condición muchos objetos pueden ser agregados a un buffer lleno o removidos de un buffer vacío. Seudocódigo con race condition

Upload: jorge-antonio-sarmiento

Post on 05-Dec-2015

213 views

Category:

Documents


0 download

DESCRIPTION

definicion

TRANSCRIPT

Page 1: Race Condition

Race Condition

También llamada “condición de competencia” es una expresión usada en programación que se usa para referirse a cuando múltiples procesos acceden al mismo tiempo y cambian el estado de un recurso compartido (por ejemplo una variable), obteniendo de esta forma un valor no esperado de ese recurso.

Existe una "condición de carrera" cuando multihilo código (o de otro modo paralelo) que acceder a un recurso compartido podría hacerlo de tal manera como para causar resultados inesperados.

En el siguiente seudocódigo podemos apreciar un programa de productor-consumidor implementado con monitores, en él se aprecia que tiene las operaciones WAIT y SIGNAL (monitores). El uso de la sentencia while cuando se comprueba si el buffer está lleno o vacío con múltiples consumidores hay un race condition, cuando un consumidor es notificado que un objeto ha sido puesto en el buffer pero otro consumidor que está esperando en el monitor lo extrae del buffer antes. Si en vez de una sentencia while se usan variables de condición muchos objetos pueden ser agregados a un buffer lleno o removidos de un buffer vacío.

Seudocódigo con race condition