Code Monkey home page Code Monkey logo

threading-uap's Introduction

Hilos

En un sistema, los procesos que se ejecutan de forma concurrente pueden ser clasificados como independientes o cooperantes. Los procesos independientes operan de manera autónoma, sin depender de otros procesos. Por ejemplo, los intérpretes de comandos en un sistema funcionan de forma independiente. Por otro lado, los procesos cooperantes están diseñados para trabajar juntos en una actividad, requiriendo comunicación e interacción entre sí.

Tanto los procesos independientes como los cooperantes pueden interactuar de dos formas distintas:

  • Interacciones motivadas por el acceso a recursos compartidos. Esto ocurre cuando los procesos compiten o comparten recursos físicos o lógicos. Por ejemplo, dos procesos independientes pueden competir por acceder a un disco o modificar el contenido de un registro en una base de datos. El sistema operativo debe gestionar estos accesos para evitar conflictos.

  • Interacciones motivadas por la comunicación y sincronización entre procesos para lograr un objetivo común. Por ejemplo, un compilador se puede construir utilizando dos procesos: uno que genera código ensamblador y otro que convierte ese código en lenguaje máquina. En este caso, es necesario que ambos procesos se comuniquen y sincronicen para lograr una compilación exitosa.

Estas interacciones entre procesos requieren que el sistema operativo proporcione mecanismos y servicios para facilitar la comunicación y sincronización entre ellos.

Enunciado

1- Supongamos que estás desarrollando un sistema de gestión de inventario para una tienda. Tienes una lista de productos y tres tareas que deben realizarse de manera concurrente:

  • Tarea 1 - Actualizar el stock: Esta tarea consiste en recorrer la lista de productos y actualizar la cantidad en stock de cada uno. Para simplificar, consideremos que la tarea consiste en aumentar en 10 unidades la cantidad en stock de cada producto.
  • Tarea 2 - Actualizar el precio del dólar: Esta tarea consiste en actualizar el precio actual del dólar para que posteriormente los informes tengan un precio real. Los precios registrados en el sistema están todos en dólares.
  • Tarea 3 - Generar informe: Esta tarea depende de las dos tareas anteriores. Debe generar un informe que muestre la lista de productos junto con su cantidad en stock actualizada y el precio total del inventario. El objetivo es crear un programa en C# utilizando hilos que realice estas tres tareas de manera concurrente. Cada tarea debe ejecutarse en un hilo separado. Asegúrate de utilizar los mecanismos de sincronización adecuados para asegurar que la tarea 3 no comience hasta que las tareas 1 y 2 hayan finalizado correctamente.

2- Supongamos que el sistema de gestión de inventario de la tienda ha evolucionado y ahora se requiere agregar una nueva tarea: la actualización de precios de los productos. Esta tarea consiste en recorrer la lista de productos y ajustar los precios según una nueva política de precios establecida por la gerencia (+10% por inflación) antes de generar los informes. El nuevo objetivo es modificar el programa del punto anterior para que el informe pueda generarse de manera correcta, con el stock y el precio actualizado. Ten en cuenta que varias tareas comparten la misma lista de productos.

Aclaraciones

En el proyecto dentro de este repositorio, encontrarán todas las herramientas para poder resolver este enunciado. Para entregar el proyecto debe forkear este repositorio, resolver los enunciados y hacer una pull request con la solución para que se considere entregado.

threading-uap's People

Contributors

amilcarrey avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.