<?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>semáforo archivos - Frexus</title>
	<atom:link href="https://www.frexus.dev/tag/semaforo/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.frexus.dev/tag/semaforo/</link>
	<description>Generando Valor Agreado</description>
	<lastBuildDate>Wed, 10 Jan 2024 05:46:01 +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>semáforo archivos - Frexus</title>
	<link>https://www.frexus.dev/tag/semaforo/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">215529362</site>	<item>
		<title>Semáforo</title>
		<link>https://www.frexus.dev/post/semaforo/</link>
					<comments>https://www.frexus.dev/post/semaforo/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Wed, 06 Sep 2023 05:36:00 +0000</pubDate>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[semáforo]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=2398</guid>

					<description><![CDATA[<p>Semáforo son una herramienta versátil en programación concurrente, proporcionando mecanismos efectivos para controlar el acceso a recursos compartidos y coordinar la ejecución de hilos, lo que contribuye a la escritura de programas concurrentes seguros y eficientes. Aquí tienes un ejemplo simple de cómo se pueden utilizar semáforos en Python, utilizando la biblioteca threading En este ejemplo, se crea un semáforo binario (sem) con un valor inicial de 1. La función incrementar representa una sección crítica donde se incrementa la variable contador. Antes de entrar en la sección crítica, se adquiere el semáforo (sem.acquire()), y después de salir de la sección crítica, se libera el semáforo (sem.release()). La operación acquire actúa como la operación wait, y release actúa como la operación signal. Estas operaciones aseguran que solo un hilo pueda ejecutar la sección crítica a la vez, logrando exclusión mutua y evitando condiciones de carrera.</p>
<p>La entrada <a href="https://www.frexus.dev/post/semaforo/">Semáforo</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="867" height="1300" src="https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-3889928.jpeg" alt="semáforo photo of person riding kayak during dawn" class="wp-image-2399" style="width:362px;height:auto" srcset="https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-3889928.jpeg 867w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-3889928-200x300.jpeg 200w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-3889928-683x1024.jpeg 683w, https://www.frexus.dev/wp-content/uploads/2024/01/pexels-photo-3889928-768x1152.jpeg 768w" sizes="(max-width: 867px) 100vw, 867px" /><figcaption class="wp-element-caption">Photo by Taryn Elliott on <a href="https://www.pexels.com/photo/photo-of-person-riding-kayak-during-dawn-3889928/">Pexels.com</a></figcaption></figure>
</div>


<p>Semáforo son una herramienta versátil en programación concurrente, proporcionando mecanismos efectivos para controlar el acceso a recursos compartidos y coordinar la ejecución de hilos, lo que contribuye a la escritura de programas concurrentes seguros y eficientes.</p>



<p>Aquí tienes un ejemplo simple de cómo se pueden utilizar semáforos en Python, utilizando la biblioteca <code>threading</code></p>



<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
import time

# Crear un semáforo binario (inicializado en 1)
sem = threading.Semaphore(1)

# Variable compartida
contador = 0

# Función para incrementar el contador
def incrementar():
    global contador
    sem.acquire()  # Operación wait
    try:
        for _ in range(1000000):
            contador += 1
    finally:
        sem.release()  # Operación signal

# Crear dos hilos que incrementan el contador
hilo1 = threading.Thread(target=incrementar)
hilo2 = threading.Thread(target=incrementar)

# Iniciar los hilos
hilo1.start()
hilo2.start()

# Esperar a que ambos hilos terminen
hilo1.join()
hilo2.join()

# Imprimir el valor final del contador
print("Valor final del contador:", contador)
</pre>



<p>En este ejemplo, se crea un semáforo binario (<code>sem</code>) con un valor inicial de 1. La función <code>incrementar</code> representa una sección crítica donde se incrementa la variable <code>contador</code>. Antes de entrar en la sección crítica, se adquiere el semáforo (<code>sem.acquire()</code>), y después de salir de la sección crítica, se libera el semáforo (<code>sem.release()</code>).</p>



<p>La operación <code>acquire</code> actúa como la operación <code>wait</code>, y <code>release</code> actúa como la operación <code>signal</code>. Estas operaciones aseguran que solo un hilo pueda ejecutar la sección crítica a la vez, logrando exclusión mutua y evitando condiciones de carrera.</p>
<p>La entrada <a href="https://www.frexus.dev/post/semaforo/">Semáforo</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/post/semaforo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2398</post-id>	</item>
	</channel>
</rss>
