Explicando las condiciones de la raza a una audiencia no técnica [cerrada] -- urrency campo con communication camp Relacionados El problema

Explaining race conditions to a non-technical audience [closed]


20
vote

problema

Español
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas.

¿Quieres mejorar esta pregunta? Actualizar la pregunta para que pueda responderse con hechos y citas de Edición de este post .

cerrado hace 3 años .

Mejorar esta pregunta

Recientemente, me pareció tener que escribir algunas preocupaciones que tengo sobre las condiciones de carrera en una solicitud que está en desarrollo (no por mí). Probablemente esto será llevado a la atención de las partes interesadas que no son técnicas y con las que no tengo una línea de comunicación directa, por lo que mi explicación debe estar en forma escrita.

Ya he intentado en este artículo. Mejorar los detalles técnicos lo mejor que pueda, dar un ejemplo de cómo se produciría una condición de raza en la solicitud y describiría su impacto. Siento que lo hice bastante bien, pero está lejos de ser perfecto.

El problema es que, por lo tanto, ya que trato de proteger al lector de la informática, todavía me he encontrado difícil eliminar frases como "hilos de ejecución" y "exclusión mutua" sin perder la corrección y la sustancia. El riesgo es que, con demasiada mano, estas preocupaciones podrían desestimarse como un boogeyman maquillado.

De todos modos, mi pregunta a usted es esto: ¿Cómo lo haría Explique las condiciones de la carrera a una audiencia no técnica? ¿Se atrevería a explicar la programación de CPU? ¿Invocaría el ¡Philósofos de comidas ?

No tiene que trabajar dentro de las limitaciones de mi situación (pero sería asombrosamente útil si lo hiciste).

Original en ingles

Recently, I found myself having to write up some concerns I have about race conditions in an application that is in development (not by me). This will likely be brought to the attention of stakeholders who are non-technical and with whom I do not have a direct line of communication, so my explanation needs to be in written form.

I have already made an attempt at this write-up. I gloss over the technical specifics as best I can, give an example of how a race condition would occur in the application, and describe its impact. I feel I did pretty well, but it's far from perfect.

The problem is, as much as I try to shield the reader from computer science, I have still found it difficult to eliminate phrases like "threads of execution" and "mutual exclusion" without losing correctness and substance. The risk is that, with too much hand-waving, these concerns could be dismissed as a made-up boogeyman.

Anyway, my question to you is this: How would you explain race conditions to a non-technical audience? Would you dare to explain CPU scheduling? Would you invoke the dining philosophers?

You don't have to work within the constraints of my situation (but it would be awesomely helpful if you did).

     
   
   

Lista de respuestas

23
 
vote
vote
La mejor respuesta
 

La empresa X tiene $ 1,000 en el banco. X Paga un alquiler de $ 2,000 y recibió un pago de $ 10,000 para los servicios prestados a la compañía Y. Sin embargo, debido a una condición de carrera, X está en déficit de $ 1,000 y ahora está solicitando la bancarrota. = (

Es posible que desee explicar cómo el banco maneja la cuenta de la compañía X de esta manera: el personal del Banco A toma el valor actual de $ 1,000 y agrega $ 10,000 a ella. El personal bancario B lleva el valor actual de $ 1,000 y resta $ 2,000 de ella. El personal del banco A actualiza el valor a $ 11,000. El personal bancario B actualiza el valor a: $ 1,000.

 

Company X has $1,000 in the bank. X pays a rent of $2,000 and received a payment of $10,000 for services rendered to company Y. However, due to a race condition, X is in deficit of $1,000 and is now applying for bankruptcy. =(

You might want to explain how the bank handles company X's account in this way: Bank staff A takes the current value of $1,000 and adds $10,000 to it. Bank staff B takes the current value of $1,000 and subtracts $2,000 from it. Bank staff A updates the value to $11,000. Bank staff B updates the value to -$1,000.

 
 
         
         
11
 
vote

Creo que las transacciones bancarias pueden ser un buen ejemplo, tanto porque es fácil ver que un resultado incorrecto es mal y porque las condiciones de la raza son fáciles de crear en un entorno de este tipo.

Tengo $ 500 en mi cuenta. Alguien me transfiere $ 200 al mismo tiempo que me retiro $ 50.

Ahora, si el banco no maneja las condiciones de carrera correctamente, harán lo siguiente (suponiendo que las transacciones se manejen manualmente, por supuesto) El empleado A verá la solicitud para agregar $ 200 a mi saldo y observar que mi saldo es actualmente $ 500. El empleado B verá la solicitud para restar $ 50 de mi saldo, y observar que mi saldo es actualmente $ 500 (Secretario A aún no ha transferido el dinero).

El empleado A finaliza el papeleo y establece el saldo de mi cuenta a $ 700 (500 + los 200 se suponía que se suponía). Y luego, un minuto después (porque el empleado B acaba de tener que tomar una taza de café), el empleado B termina la otra transacción y establece mi saldo a $ 450 (los 500 que tuve cuando revisó, menos los 50 estaban destinados a restar ).

Mi saldo es ahora $ 450, cuando debería haber sido de $ 650, debido a una condición de carrera. El resultado dependía del orden en que se realizaron diferentes partes de las dos transacciones.

Esa es la descripción general de cómo las condiciones de carrera son malas. Ahora, digamos que en lugar de los empleados, tenemos nuestra aplicación procesando dos tareas separadas al mismo tiempo (que son sus 'hilos de ejecución'), y al igual que arriba, ambos leen un valor, modifique el valor que ellos Leer, y luego escríbelo. Una de las modificaciones se puede perder si esto sucede en el orden que se muestra arriba. Que debe relacionarlo con los problemas específicos en su aplicación.

 

I think bank transactions might be a good example, both because it's easy to see that an incorrect result is bad and because race conditions are easy to create in such an environment.

I have $500 on my account. Someone transfers $200 to me at the same time that I withdraw $50.

Now, if the bank doesn't handle race conditions properly, they will do the following (assuming the transactions are handled manually, of course) Clerk A will see the request to add $200 to my balance, and note that my balance is currently $500. Clerk B will see the request to subtract $50 from my balance, and note that my balance is currently $500 (clerk A hasn't yet transferred the money).

Clerk A finishes the paperwork and sets my account balance to $700 (500 + the 200 he was supposed to add). And then, a minute later (because clerk B just had to grab a cup of coffee), clerk B finishes up the other transaction and sets my balance to $450 (the 500 I had when he checked, minus the 50 he was meant to subtract).

My balance is now $450, when it should have been $650, because of a race condition. The outcome depended on the order in which different parts of the two transactions were performed.

That's the general description of how race conditions are bad. Now say that instead of clerks, we have our application processing two separate tasks at the same time (that's your 'threads of execution'), and just like above, they both read a value, modify the value that they read, and then write it back. One of the modifications may then be lost if this happens in the order shown above. That should relate it to the specific problems in your app.

 
 
   
   
2
 
vote

Iría para un enfoque de Philosopher-ESQUE para comer, pero dependiendo de mi audiencia, trataría de analogízalo al contexto de mi audiencia. ¿Estás hablando con ejecutivos de negocios? Luego, analógalo a algo así como asignar una sala de reuniones o un automóvil corporativo o reservar una habitación de hotel o lo que sea. ¿Estás hablando con la gente promedio? Luego, el ejemplo del filósofo del comedor está bien, o puede pensar una situación similar con el cuidado de los animales de granja o sentarse en sillas o lo que sea.

Ya sea que secuestre el ejemplo del filósofo del comedor, o invente su propio, definitivamente use una metáfora.

 

I would go for a Dining Philosopher's-esque approach, but depending on my audience, I would try to analogize it to the context of my audience. Are you speaking to business executives? Then analogize it to something like allocate a meeting room or a corporate car or booking a hotel room or whatever. Are you talking to average people? Then the dining philosopher's example is fine, or you can think up a similar situation involving caring for farm animals or sitting in chairs or whatever.

Whether you hijack the dining philosopher's example, or make up your own, definitely use a metaphor.

 
 
   
   
2
 
vote

Si está escribiendo a una audiencia no técnica, querrá simplificar sus explicaciones y relacionarlo con algo que pueden entender. Una explicación tomada de las analogías de papel para enseñar computación paralela a programadores inexpertos ( HTTP: / / PORTAL .acm.org / cita.cfm? Doid = 1189136.1189172 ) lo explica en términos de un juego de pluma:

Vamos a jugar un juego llamado Juego de pluma. Las reglas son simples: estoy voy a sostener una pluma en mi mano, y Entonces diré "uno, dos, tres, ve". Cuando digo "Ir", toma la pluma de mi mano. Quienquiera que tenga la pluma gana. ¿Listo? Uno, dos, tres, ve.

Usted le pregunta si el resultado de este juego se puede predecir por adelantado. Si no se puede predecir, ¿podemos garantizar un resultado correcto? Esto debería llevar a la realización de que es posible obtener resultados incorrectos para las escrituras simultáneas en la misma pieza de memoria.

 

If you are writing to a non technical audience, you'll want to simplify your explanations and relate it to something they can understand. One explanation taken from the paper Analogies for teaching parallel computing to inexperienced programmers (http://portal.acm.org/citation.cfm?doid=1189136.1189172) explains it in terms of a pen game:

Wexe2x80x99re going to play a game called the Pen Game. The rules are simple: Ixe2x80x99m going to hold a pen in my hand, and then Ixe2x80x99ll say xe2x80x9cOne, two, three, go.xe2x80x9d When I say xe2x80x9cgo,xe2x80x9d take the pen from my hand. Whoever gets the pen wins. Ready? One, two, three, go.

You then ask if the outcome of this game can be predicted in advance. If it can't be predicted, can we guarantee a correct outcome? This should lead to the realization that it's possible to get incorrect results for simultaneous writes to the same piece of memory.

 
 
         
         
2
 
vote

Iba a recomendar los filósofos gastronómicos, pero veo que ya ha encontrado que uno. Entonces, como alternativa, ¿qué tal si se usa el bloqueo de rejillas como una analogía?

Imagine el tráfico normal que conduce a lo largo de las cuatro calles junto a un solo bloque de la ciudad (North Ave, South Ave, East Street y West Street). Cuando solo hay uno o dos autos en la carretera, todo se mueve suavemente. Cuando hay tráfico constante, algunos autos tendrán que detenerse y esperar a que otros autos se muevan, pero este es un problema manejable. Un automóvil se detiene para esperar a que se pase otro auto, y luego continúa su Feliz Way.

Ahora, el tráfico de horas de prisa en la misma ubicación. Digamos que un automóvil que conduce hacia el sur de West Street no puede llegar hasta la intersección en la esquina noroeste de nuestro bloque de la ciudad. Ese automóvil ahora bloquea todo el tráfico cruzado hacia el oeste en North Ave. No cumple mucho tiempo antes de que un automóvil hacia el oeste intente llegar a través de la intersección de la esquina noreste y se atasca, bloqueando todo el tráfico hacia el norte en East Street. Cuando esta situación lo hace todo el camino alrededor de las cuatro intersecciones, ¡ningún automóvil puede moverse! Cada uno está esperando los autos delante de él para avanzar, pero no hay forma de que la rejilla se reliba sin sacar los automóviles hacia atrás.

La comparación con la computación debe ser sencilla. Los autos son hilos o procesos, calles y avenidas son procesadores, buffers o núcleos. El concepto de bloqueo se puede describir utilizando semáforos o signos de alto, y todo comienza a hacer sentido intuitivo, incluso a los no programadores.

 

I was going to recommend the dining philosophers, but I see you have already found that one. So, as an alternative, how about using gridlock as an analogy?

Imagine normal traffic driving along the four streets next to a single city block (North ave, South ave, East street and West street). When there are only one or two cars on the road, everything moves smoothly. When there is steady traffic, some cars will have to stop and wait for other cars to move past, but this is a manageable problem. One car stops to wait for another car to go by, and then continues on its merry way.

Now, picture rush-hour traffic at the same location. Let's say that one car driving South on West street can't make it all the way through the intersection at the NorthWest corner of our city block. That car now blocks all of the Westbound cross traffic on North ave. It doesn't take long before a Westbound car tries to make it through the NorthEast corner intersection and gets stuck, blocking all of the Northbound traffic on East street. When this situation makes it all the way around the four intersections, no cars can move! Each one is waiting for the cars in front of it to move ahead, but there is no way for the gridlock to be releived without pulling cars out backwards.

The comparison to computing should be straightforward. Cars are threads or processes, streets and avenues are processors, buffers, or cores. The concept of blocking can be described using traffic lights or stop signs, and the whole thing starts to make intuitive sense, even to non-programmers.

 
 
       
       
2
 
vote

Escribe un programa:

  1. Espera el salario.
  2. ir a la tienda.
  3. comprar comida.
  4. encender el plato.
  5. poner comida en el plato.
  6. Mantenga la placa durante 20 minutos.
  7. comer.
  8. ir a la cama.

Ahora trate de tener dos hilos (usted, esposa) ejecute sin sínconización.

  • usted: espera el salario.
  • esposa: ve a la tienda sin dinero, choque

  • usted: encienda la placa.

  • usted: Mantenga la placa durante 20 minutos.
  • usted: ve a la cama.

  • esposa: Coma en el lugar de otra persona.

  • esposa: ir a la cama.
 

Write a program:

  1. Wait for salary.
  2. Go to shop.
  3. Buy food.
  4. Turn on the plate.
  5. Put food on the plate.
  6. Keep plate for 20 minutes.
  7. Eat.
  8. Go to bed.

Now try to have two threads (you, wife) execute it without syncronization.

  • You: Wait for salary.
  • Wife: Go to the shop without money, crash

  • You: Turn on the plate.

  • You: Keep plate for 20 minutes.
  • You: Go to bed.

  • Wife: Eat at someone else's place.

  • Wife: Go to bed.
 
 
   
   
1
 
vote

Peter quiere salir de su camino de entrada. Comprueba que nada está en el camino de su auto, luego se entra. Su hijo Frank se esconde detrás del auto. Peter no puede verlo y lo ejecuta.

Lo importante aquí es que para una computadora, "inspeccionar" y "modificar" tienden a ser dos acciones separadas, por lo que un ejemplo en el que no puede verificar algo cuando lo modifique es bueno.

 

Peter wants to pull out of his driveway. He checks that nothing is in the way of his car, then gets in. His son Frank then hides behind the car. Peter cannot see him and runs him over.

The important thing here is that for a computer, "inspect" and "modify" tend to be two separate actions, so an example where you can't check something when you modify it is a good one.

 
 
1
 
vote

¿Qué tal la simple obvia?

Una condición de carrera es literalmente una carrera entre dos personas.

Una empresa está haciendo una oferta en un proyecto. Dos empleados que trabajan de forma independiente en las ofertas las presentan al cliente, pero uno de los empleados tiene información obsoleta. Ni los empleados saben que el otro está en el proceso de presentar una oferta, por lo tanto, dependiendo de quién sea más rápido, la primera oferta puede ser reemplazada por el empleado más lento. Esto causará confusión, ya que la oferta puede haber cambiado con el tiempo.

Debe haber una comunicación entre los dos empleados para trabajar juntos o detener uno de ellos.

 

How about the plain obvious?

A race condition is literally a race between two people.

A company is bidding on a project. Two employees working independently on bids submit them to the customer, but one of the employees has outdated information. Neither employee know that the other is in the process of submitting a bid, therefore depending on who is faster, the first bid may be replaced with the slower employee. This will cause confusion as the bid may have changed over time.

There needs to be communication between the two employees to either work together or stop one of them.

 
 
1
 
vote

Una dificultad para explicar el concepto general es que las condiciones de raza se manifiestan en una amplia variedad de situaciones. Si su objetivo es brindar a su audiencia no técnica, el sentido de que este es un tipo de problema genérico, debe intentar ofrecer más de un ejemplo.

 

One difficulty in explaining the general concept is that race conditions manifest themselves in a wide variety of situations. If your goal is give your non-technical audience the sense that this is a generic problem type, you should try to offer more than one example.

 
 
1
 
vote

Una imagen vale 1000 palabras. Es cierto. Si dibuja una línea de tiempo y coloca alguna entidad en ella, y muestra sus cambios estatales a medida que avanza el tiempo, puede demostrar una condición de carrera bastante fácilmente en un diagrama. Puede tomar unos pocos redes para obtener la imagen justo a la derecha, pero siempre he encontrado que lo sacando hace que mi punto sea más rápido que describirlo.

 

A picture is worth a 1000 words. Its true. If you draw a timeline and put some entity on it, and show its state changes as time progresses you can demonstrate a race-condition pretty easily in one diagram. It may take a few redos to get the picture just right, but I've always found that drawing it out gets my point across must faster than describing it.

 
 
0
 
vote

Creo que es difícil explicar esto de una manera simple, porque pensar en la concurrencia es inherentemente difícil. La idea básica de una transacción financiera podría ser un buen lugar para comenzar, ya que las personas tendrán alguna familiaridad con ellos de la vida real.

En cualquier tipo de transacción, debe realizar entradas simultáneas en dos lugares, débitos y créditos. Si la transacción se interrumpe en el medio por otra persona que intenta realizar otra transacción, verán el saldo equivocado en una u otra de las cuentas.

 

I think it's hard to explain this in a simple way, because thinking about concurrency is inherently hard. The basic idea of a financial transaction might be a good place to start, since people will have some familiarity with them from real life.

In any kind of transaction, you need to make simultaneous entries in two places - debits and credits. If the transaction gets interrupted in the middle by someone else trying to perform another transaction, they will see the wrong balance in one or the other of the accounts.

 
 
0
 
vote

Hay un gran ejemplo en Programación concurrente estructurada con aplicaciones de sistemas operativos ( Como recuerdo)

En el país empobrecido de Bezerkistán, dos líneas se fusionan a una sola pista en un túnel. Ha habido colisiones y la junta gobernante necesita una solución.

El problema es que es montañoso y los ingenieros son ciegos. Hay muy poca advertencia anticipada de dos trenes a punto de colisionar en el túnel.

Aquí está el plan.

  1. Ponga un tazón grande en la coyuntura.

  2. Dar a cada ingeniero un poco de monos de latón.

Cuando está a punto de ingresar al túnel, detiene su tren. Dale una palmadita en el cuenco para ver si un mono de latón está en el recipiente.

Si hay un mono, alguien más está usando el túnel, por lo que tiene que esperar hasta que su tren esté completamente en el túnel, momento en el cual el conductor sale del Caboose y agarra el mono del tazón.

Si no hay mono, nadie más está usando el túnel. Por lo tanto, puede agarrar su mono del compartimiento del motor, colóquelo en el recipiente y conduzca por el túnel, sabiendo que ha adquirido acceso exclusivo a la pista. Por supuesto, se detiene brevemente para permitir que el conductor recupere el mono de Brass.

adivina que?

ellos todavía tenían colisiones!

¿Por qué? ¿Cuál es la situación o secuencia de acciones que causa que esto falle?


Esa es una condición de carrera.

En un documento escrito, puede explicar cómo conduce la condición de la carrera a un accidente.

En una presentación, puede entrenar a la audiencia a través del razonamiento de la concurrencia y el bloqueo.

 

There's a great example in Structured Concurrent Programming With Operating Systems Applications (as I recall)

In the impoverished country of Bezerkistan, two lines merge onto a single track in a tunnel. There have been collisions and the ruling junta needs a solution.

The issue is that it's mountainous and the engineers are blind. There's very little advance warning of two trains about to collide in the tunnel.

Here's the plan.

  1. Put a big bowl at the juncture.

  2. Give each engineer a little brass monkey.

When you're about to enter the tunnel, you stop your train. You pat around in the bowl to see if a brass monkey is in the bowl.

If there's a monkey, someone else is using the tunnel, so you have to wait until their train is entirely in the tunnel, at which time the conductor gets out of the caboose and grabs the monkey from the bowl.

If there's no monkey, no one else is using the tunnel. So, you can grab your monkey from the engine compartment, put it in the bowl and drive through the tunnel, knowing you have acquired exclusive access to the track. Of course, you stop briefly to allow the conductor to retrieve the brass monkey.

Guess what?

They still had collisions!

Why? What's the situation or sequence of actions that causes this to fail?


That's a race condition.

In a written document, you can explain how the race condition leads to an accident.

In a presentation, you can coach the audience through reasoning about concurrency and locking.

 
 
       
       
0
 
vote

Yo usaría un ejemplo de cuenta bancaria de memoria compartida de una condición de carrera de datos.

Explique que la computadora hace algo así: carga equilibrio; Añadir 1; Balance de la tienda;. Considere dos hilos que están modificando el saldo de su cuenta bancaria (usted y su esposa están depositando un dólar al mismo tiempo).

Si ambas temas se interponen interusultados después de: Balance de carga; y luego reanudar, puedes perder un dólar.

ver: http://wasp.cs.washington.edu/atomeclipse/handuts .pdf

 

i would use a shared memory bank account example of a data race condition.

explain that the computer does something like: load balance; add 1; store balance;. consider two threads that are modifying your bank account balance (you and your wife are both depositing one dollar at the same time).

if both threads get interuupted after the: load balance; and then resume, you can lose one dollar.

see: http://wasp.cs.washington.edu/atomeclipse/handouts.pdf

 
 
0
 
vote

Como mencionó, a menudo necesita introducir otros conceptos (exclusión mutua, hilos de ejecución) para describir con precisión las condiciones de la raza, incluso en una metáfora. Así que intente definir estos términos (o al menos obtener la idea de través) primero, usando la metáfora.

Como ejemplo simple, usemos una intersección de 4 vías (establecida en un país donde conduce a la derecha). Divide la intersección en 4 cuadrantes: noroeste, noreste, sureste y suroeste. Ahora llame a cada cuadrante un recurso, y llame a cada automóvil un hilo de ejecución. Estos autos solo respetan los sistemas de tráfico, y como no hay señales de parada ni semáforos en esta intersección, los automóviles barriles están justo a través de la velocidad sin desaceleración o considerando el tráfico.

Puede demostrar fácilmente que el uso simultáneo de uno de estos cuadrantes por más de un automóvil es malo y resulta en un accidente automovilístico. Una solución obvia es instalar un sistema de tráfico. El sistema garantiza que no más de un automóvil pase a través de un cuadrante al mismo tiempo. Puede hacer esto intrincadamente, sin atar todos los recursos. Por ejemplo, dejar que los automóviles provengan del sur, hagan un giro a la izquierda hacia la cabeza hacia el oeste (usando los cuadrantes del sudeste y del noroeste), mientras que dejar que los autos provenientes del oeste hacen un giro a la derecha para dirigirse al sur (usando el cuadrante suroeste) . El sistema de tráfico proporciona exclusión mutua, o prevenir el uso simultáneo (por múltiples automóviles) de un recurso común (el cuadrante de carretera en la intersección).

Esto al menos proporciona las ideas detrás de estas definiciones, la idea de que accediendo simultáneamente los recursos compartidos puede ser malo, y esa exclusión mutua puede resolver este problema. Después de establecer esto, deberá asignarlo a una metáfora más apropiada para mostrar lo que es una condición de carrera y cómo es una de esas cosas malas que resulta de la falta de exclusión mutua para un recurso común.

Se necesita un poco más, pero otorga algo de familiaridad con los términos y la imagen grande antes de perforar en una metáfora más compleja.

 

As you mentioned, you often need to introduce other concepts (mutual exclusion, threads of execution) to accurately describe race conditions, even in a metaphor. So try defining these terms (or at least getting the idea across) first, using metaphor.

As a simple example, let's use a 4-way intersection (set in a country where you drive on the right). Divide the intersection into 4 quadrants: North-West, North-East, South-East, and South-West. Now call each quadrant a resource, and call each car a thread of execution. These cars only respect traffic systems, and since there are no stop signs or traffic lights at this intersection, the cars barrel right on through without slowing or considering traffic.

You can easily show that simultaneous use of one of these quadrants by more than one car is bad, and results in a car crash. One obvious solution is to install a traffic system. The system ensures that no more than one car is passing through a quadrant at the same time. It can do this intricately, without tying up all the resources. For example, letting cars coming from the South make a left turn to head West (using south-east and north-west quadrants), while letting cars coming from the West make a right turn to head South (using the south-west quadrant). The traffic system is providing mutual exclusion, or preventing simultaneous use (by multiple cars) of a common resource (the quadrant of road in the intersection).

This at least provides the ideas behind these definitions, the idea that simultaneously accessing shared resources can be bad, and that mutual exclusion can solve this problem. After this is established, you'll need to map these to a more appropriate metaphor to show what a race condition is and how it's one of those bad things that results from lack of mutual exclusion for a common resource.

It takes a bit longer, but it grants some familiarity with terms and the big picture before drilling down into a more complex metaphor.

 
 
0
 
vote

Hablar de dinero a sus partes interesadas puede enviarlas al modo de pánico, especialmente si asumen que están perdiendo dinero real debido a esto, lo que no es exactamente ideal si el problema no resulta específicamente a una pérdida neta de ganancias, por lo que aquí hay un Menos historia orientada financieramente sobre cómo puede explicar una condición de raza a cualquiera.

Esta historia no aborda el concepto de punto muerto , pero el escenario y las consecuencias de la condición de raza más tradicionales.

historia comienza aquí:

El ajuste: Hay 3 ciudades conectadas por una red ferroviaria. Los trenes no tienen signos en ellos que indican de qué ciudad vienen y de qué ciudad van a que van a que se están utilizando entre las 3 ciudades y la red ferroviaria no quería lidiar con la molestia de cambiar los signos. hora. Dado que la red es pequeña, no hay un horario de concreto cuando llegue los trenes y se vaya. Los supervisores de la estación simplemente reciben una llamada de los otros supervisores de la estación de la ciudad cuando sale un tren, el supervisor toma nota de la época en la que se ha ido y, dado que todos los trenes son los mismos modelos que conducen a la misma velocidad, por lo que cuando el supervisor recibe Una llamada de las otras ciudades que anuncian a la gente en la estación que: "El próximo tren se dirigirá a la ciudad C". Así que las personas que deseen viajar a la ciudad C espera al tren, saltar y montar alegremente a la ciudad C.

El problema: Pero un día, como un tren estaba planeando su ruta de A a B a C, se rompió a medio camino entre A y B. Afortunadamente, los técnicos son muy capacitados y lo harían Ser capaz de reparar el tren en poco tiempo. Sin embargo, ese mismo día, otro tren también estaba planeando una ruta diferente de C a B a A. El supervisor en la estación B recibió una llamada de un tren que se acerca un tren, y poco después de recibir otra llamada de C que también venía otro tren. El supervisor de la estación se anunció a los pasajeros a la espera de la estación: "El primer tren llegado se dirigirá a la estación C, y poco después del tren después de eso se dirigirá a la estación A." A medida que los pasajeros reunían su equipaje y se dirigían a sus respectivas plataformas. El supervisor vio un tren que viene y redirigió los rieles a la plataforma donde la gente planeaba dirigirse a la ciudad de C. Little sabía que el tren en realidad iba a la ciudad. El otro tren, después de haber fijado sus "problemas mecánicos, también llegó a la estación y el supervisor felizmente lo dirigió a la plataforma que contiene pasajeros que deseen ir a la ciudad A. No hace falta decir que ninguno de los pasajeros llegó donde se planearon, todo porque la Supervisor asumió que llegarían en orden como de costumbre.

 

Talking about money to your stakeholders might send them into panic mode especially if they assume they are losing actual money because of this, which is not exactly ideal if the problem does not specifically result in a net loss of profits, so here's a less financially oriented story on how you can explain a race condition to anyone.

This story does not address the concept of deadlock, but the more traditional race condition scenario and consequences.

STORY STARTS HERE:

The Setting: There are 3 cities connected by a railway network. The trains do not have any signs on them indicating which city they are coming from and which city they are going to because they are being used between all 3 cities and the railway network didn't want to deal with the hassle of changing signs all the time. Since the network is small there is no concrete schedule on when trains arrive and leave. The station overseers just get a call from the other city station overseers when a train departs, the overseer takes a note of the time when it has left and since all trains are the same models they drive at the same speed, so when the overseer receives a call from the other cities they announce to the people in the station that: "The next train will be heading to city C". So the people who wish to travel to city C await the train, hop on and merrily ride to city C.

The Problem: But one day, as a train was planning its route from A to B to C, it broke down half-way between A and B. Luckily the technicians are very skilled and would be able to repair the train in a short while. However that same day another train was also planning a different route from C to B to A. The overseer at station B received a call from A that a train is coming, and shortly after received another call from C that another train was also coming. The station overseer then announced to the passengers awaiting in the station: "The first train arriving will be heading to station C, and shortly after the train after that will be heading to station A." As the passengers gathered their luggage and went to their respective platforms. The overseer saw a train coming and redirected the rails to the platform where people were planning to head to city C. Little did they know that the train was actually going to city A instead. The other train, after having fixed its' mechanical problems also arrived at the station and the overseer happily directed it to the platform containing passengers wishing to go to city A. Needless to say none of the passengers arrived where they planned to, all because the overseer assumed that they would arrive in order as usual.

 
 
0
 
vote

El problema con las condiciones de la raza y muchas construcciones de ciencias de la computación es que las personas no son computadoras. Cada vez que explico un algoritmo a mis alumnos, dicen "pero no tiene sentido hacerlo de esa manera", a la que respondo "las computadoras no tienen sentido común, todo lo que tienen son instrucciones". Aparte de eso, deberías explicar una condición de raza como una carrera, y tiene la mayor parte de dejar que las personas realmente prueben la carrera, si pueden. De esa manera pueden ver cómo se equivocan las cosas. Pero ... no se les permite usar el sentido común.

Entonces, asumamos que tenemos un juego donde 2 personas llenan pilas de bloques de colores en orden rojo, naranja, amarillo. Tienen muchos bloques rojos, naranjas y amarillos. Todas las pilas deben tener exactamente tres bloques de altura.

En el primer juego, intenta hacer esto lo más rápido posible, pero solo trabajan en sus propias pilas.

En el segundo juego, intentan trabajar juntos al permitir que también apilan bloques en las pilas de cada uno. Sin embargo, no se les permite cambiar el bloque que tienen en su mano, y tienen que colocar un bloque planeado.

Puedes imaginar una situación como esta ocurre en Stack 1:

  player 1 grabs a red block player 1 places red block         - player 2 grabs an orange block player 1 grabs an orange block    - player 2 places an orange block player 1 places an orange block   

Así que ahora tenemos una pila con dos bloques de naranja. Es obvio que con un juego humano, esto nunca sucedería, porque las personas tienen sentido común: ven que el bloque de naranja ya está colocado, y revertir su decisión también de colocar un bloque naranja.

También puedes mostrarles este video: https://www.youtube.com/watch? v = tcgwndbsabc

 

The problem with race conditions and many many computer science constructs is that people are not computers. Every time I explain an algorithm to my students they say "but it doesn't make sense to do it that way", to which I reply "computers don't have common sense, all they have are instructions". That aside, you should explain a race condition as a race, and it makes most sense to let people actually try the race, if they can. That way they can see how things go wrong. But... they are not allowed to use common sense.

So let's assume we have a game where 2 persons fill up stacks of colored blocks in order Red, Orange, Yellow. They have many red, orange and yellow blocks. All stacks need to be exactly three blocks high.

In the first game both try to do this as fast as possible, but they only work on their own stacks.

In the second game they try to work together by allowing themselves to also stack blocks on each other's stacks. However they are not allowed to change the block they have in their hand, and they have to place a planned block.

You can imagine a situation like this occurs in stack 1:

player 1 grabs a red block player 1 places red block         - player 2 grabs an orange block player 1 grabs an orange block    - player 2 places an orange block player 1 places an orange block 

So now we have a stack with two orange blocks. It's obvious that with a human game this would never happen, because people have common sense: they see that the orange block is already placed, and revert their decision to also place an orange block.

Also you can show them this video: https://www.youtube.com/watch?v=TcGwNdbsAbc

 
 
0
 
vote

Vamos a usar una pizarra para hacer una tarea contable trivial. Tenemos $ 100 a mano, escríbalo en la pizarra.

Alice tiene docenas de facturas que suman hasta $ 100, por lo que va a tener en cuenta que $ 100, vaya y agregue su lista y regrese en 5 minutos y escriba $ 200 en la pizarra.

Bob está comprando. Va a tomar ese número de la pizarra y voy y restará las compras de $ 50, y luego va a escribir $ 50 en la pizarra.

Si Bob regresa primero, veremos $ 200 después de que Alice escribe su resultado. Si Alice se vuelve primero, veremos $ 50, también mal. Lo que quiero para ver es de $ 150, y debemos agregar algunas precauciones en algún lugar para hacer que eso suceda.

Eso debería ser suficiente para ensancharse una discusión de soluciones técnicas con intuiciones razonables.

Por ejemplo, un mutex significa que bloqueas la puerta a la habitación con la pizarra en ella, y haz que hagan su trabajo allí. Una solución optimista significa que los obtienes a ambos para verificar y comenzar a comenzar si el número cambió mientras estaban fuera. Si quieres hablar de puntos muertos, puedes reírse de que Bob llamó a Alice desde dentro de la sala cerrada para pedirle que se apure.

 

Let's use a whiteboard to do a trivial accounting task. We've got $100 on hand - write it on the whiteboard.

Alice has dozens of invoices that add up to $100, so she's going to note that $100, go and add up her list and come back in 5 minutes and write $200 on the board.

Bob's been shopping. He's going to take that number from the whiteboard and go and subtract $50 worth of purchases, and then he's going to write $50 on the board.

If Bob gets back first, we'll see $200 after Alice writes her result. If Alice gets back first we'll see $50, also wrong. What we want to see is $150, and we need to add some precautions somewhere to make that happen.

That should be enough to scaffold a discussion of technical solutions with reasonable intuitions.

For example, a mutex means you lock the door to the room with the whiteboard in it, and make them do their work in there. An optimistic solution means you get them both to check and start over if the number changed while they were away. If you want to talk about deadlocks, you can laugh about Bob calling Alice from inside the locked room to ask her to hurry up.

 
 
-1
 
vote

Envíalos a condición de carrera en Wikipedia.

La primera parte tendrá algún sentido, y el resto (no se muestra a continuación) te hará lucir inteligente ya que asumirán que lo entiende.

"Una condición de carrera o peligro de raza es un defecto en un sistema o un proceso por el cual la salida y / o el resultado del proceso dependen inesperadamente y críticamente de la secuencia o el tiempo de otros eventos. El término se origina con la idea de dos Las señales se aceleran mutuamente para influir en la salida primero ".

Creo que el punto clave para cruzar es que es más frecuente un problema de sincronización que puede ser impredecible porque el tiempo que algo quita difiere de vez en cuando.

 

Send them to Race Condition on Wikipedia.

The first part will make some sense, and the rest (not shown below) will make you look smart since they will assume you understand it.

"A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events. The term originates with the idea of two signals racing each other to influence the output first."

I think the key point to get across is that its most frequently a timing issue that can be unpredictable because the timing something takes differs from time to time.

 
 
   
   

Relacionados problema

0  Cómo comunicarse con los procesos .NET cuando hay múltiples instancias de ellas  ( How to communicate with net processes when there are multiple instances of them ) 
Tengo múltiples instancias de las mismas instalaciones de Windows .NET 3.5 SP1 C # Aplicación que se ejecuta en la misma máquina. Ahora me gustaría poder co...

0  Buscando una recomendación para usar WebService en la comunicación  ( Looking for a recommendation to use webservice in communication ) 
Tengo PC que se conecta a mi servicio web en el servidor. ¿Cuáles son las mejores recomendaciones para usar y verificar si tengo conexión? Si no hay conex...

0  Método de llamada desde NSMANEDOBJECTO DE UIVIEWCONTROLLER (PATTEL MVC)  ( Call method from nsmanagedobject from uiviewcontroller mvc pattern ) 
Mi pregunta es simple. ¿Cómo comunicarse entre mi modelo y mi controlador? código en controlador NSEntityDescription *entity = [NSEntityDescription entit...

0  ¿Opciones para la comunicación de Silverlight-To-WPF Async?  ( Options for async silverlight to wpf communication ) 
¿Cuál es el modelo de comunicación más rápido para un componente Silverlight que se comunica con un componente WPF? Es decir,, al menos, me gustaría consumir ...

1  Comunicación Javafx entre controladores  ( Javafx communication between controllers ) 
Soy nuevo en JavaFX , por lo que necesito ayuda para compartir datos entre dos controladores. Tengo una ventana simple que tiene un menú simple: @FXML L...

2  Juego multijugador de Android con programación de zócalo  ( Android multiplayer game with socket programming ) 
He estado buscando si es posible desarrollar un juego multijugador con programación de socket en la plataforma Android sobre WiFi, pero no pude encontrar una ...

1  Echoing personajes a un puerto serie en C  ( Echoing characters to a serial port in c ) 
Estoy intentando usar C a eco de los caracteres de un procesador PIC32 a un emulador de terminales a través de un puerto serie. Se le solicitaría al usuario q...

1  Pasando variables entre los núcleos en OpenCl 1.2 / Comunicación entre los núcleos  ( Passing variables between kernels in opencl 1 2 communication between kernels ) 
Soy relativamente nuevo en OpenCl. Estoy usando el envoltorio de OpenCl 1.2 C ++. Digamos que tengo el siguiente problema: Tengo tres valores enteros A, B y C...

1  ¿Cómo comunican 2 androides en una aplicación?  ( How communicate 2 androids in an app ) 
Voy a crear una aplicación de Android, pero necesito ayuda. No sé cómo comunicar dos teléfonos Androids usando una aplicación. Por ejemplo, dos jugadores co...

2  Windows Mobile - Dispositivo al dispositivo a través de WiFi?  ( Windows mobile device to device via wifi ) 
¿Hay alguna buena API o ejemplos de comunicación entre dos dispositivos a través de WiFi? Estoy programando una aplicación para dispositivos móviles de 600 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos