<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>monitores archivos - Frexus</title>
	<atom:link href="https://www.frexus.dev/tag/monitores/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.frexus.dev/tag/monitores/</link>
	<description>Generando Valor Agreado</description>
	<lastBuildDate>Wed, 10 Jan 2024 05:05:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.frexus.dev/wp-content/uploads/2024/03/cropped-Captura-de-Pantalla-2022-12-26-a-las-15.52.42-32x32.png</url>
	<title>monitores archivos - Frexus</title>
	<link>https://www.frexus.dev/tag/monitores/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">215529362</site>	<item>
		<title>Monitor</title>
		<link>https://www.frexus.dev/post/monitor/</link>
					<comments>https://www.frexus.dev/post/monitor/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Tue, 05 Sep 2023 04:53:00 +0000</pubDate>
				<category><![CDATA[post]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[monitores]]></category>
		<category><![CDATA[programación concurrente]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=2394</guid>

					<description><![CDATA[<p>Los monitor son una herramienta valiosa en programación concurrente y han sido ampliamente adoptados en diversos contextos para gestionar la concurrencia de manera segura y eficiente. Suponga que se quiere implementar un contador que puede ser incrementado y decrementado por varios hilos simultáneamente, pero se debe asegurar de que estas operaciones sean atómicas y que siempre se respete la exclusión mutua. Codificación Explicación En este ejemplo, la clase MonitorContador encapsula el contador y los métodos (incrementar, decrementar, obtener_valor) que operan sobre él. Se utiliza un cerrojo (mutex) para garantizar la exclusión mutua alrededor de las operaciones críticas. Los dos hilos (hilo_aumentar y hilo_disminuir) realizan incrementos y decrementos en paralelo, pero gracias al monitor, estas operaciones son seguras y el valor final del contador reflejará la suma y resta correctamente.</p>
<p>La entrada <a href="https://www.frexus.dev/post/monitor/">Monitor</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="1880" height="1253" src="https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297.jpeg" alt=" monitor down angle photography of red clouds and blue sky" class="wp-image-2395" style="width:363px;height:auto" srcset="https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297.jpeg 1880w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297-300x200.jpeg 300w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297-1024x682.jpeg 1024w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297-768x512.jpeg 768w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297-1536x1024.jpeg 1536w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-844297-1140x760.jpeg 1140w" sizes="(max-width: 1880px) 100vw, 1880px" /><figcaption class="wp-element-caption">Photo by eberhard grossgasteiger on <a href="https://www.pexels.com/photo/down-angle-photography-of-red-clouds-and-blue-sky-844297/">Pexels.com</a></figcaption></figure>
</div>


<p>Los monitor son una herramienta valiosa en programación concurrente y han sido ampliamente adoptados en diversos contextos para gestionar la concurrencia de manera segura y eficiente.</p>



<p>Suponga que se quiere implementar un contador que puede ser incrementado y decrementado por varios hilos simultáneamente, pero se debe asegurar de que estas operaciones sean atómicas y que siempre se respete la exclusión mutua.</p>



<h2 class="wp-block-heading">Codificación</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import threading

class MonitorContador:
    def __init__(self):
        self.valor = 0
        self.mutex = threading.Lock()

    def incrementar(self):
        with self.mutex:
            self.valor += 1

    def decrementar(self):
        with self.mutex:
            self.valor -= 1

    def obtener_valor(self):
        with self.mutex:
            return self.valor

# Crear una instancia del monitor
contador_monitor = MonitorContador()

# Definir una función que incrementa el contador
def aumentar_contador():
    for _ in range(1000000):
        contador_monitor.incrementar()

# Definir una función que decrementa el contador
def disminuir_contador():
    for _ in range(1000000):
        contador_monitor.decrementar()

# Crear hilos para incrementar y decrementar el contador
hilo_aumentar = threading.Thread(target=aumentar_contador)
hilo_disminuir = threading.Thread(target=disminuir_contador)

# Iniciar los hilos
hilo_aumentar.start()
hilo_disminuir.start()

# Esperar a que ambos hilos terminen
hilo_aumentar.join()
hilo_disminuir.join()

# Obtener el valor final del contador desde el monitor
valor_final = contador_monitor.obtener_valor()
print("Valor final del contador:", valor_final)
</pre>



<h2 class="wp-block-heading">Explicación</h2>



<p>En este ejemplo, la clase <code>MonitorContador</code> encapsula el contador y los métodos (<code>incrementar</code>, <code>decrementar</code>, <code>obtener_valor</code>) que operan sobre él. Se utiliza un cerrojo (<code>mutex</code>) para garantizar la exclusión mutua alrededor de las operaciones críticas. Los dos hilos (<code>hilo_aumentar</code> y <code>hilo_disminuir</code>) realizan incrementos y decrementos en paralelo, pero gracias al monitor, estas operaciones son seguras y el valor final del contador reflejará la suma y resta correctamente.</p>
<p>La entrada <a href="https://www.frexus.dev/post/monitor/">Monitor</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/post/monitor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2394</post-id>	</item>
	</channel>
</rss>
