.. include:: ../../my-header_2.txt

Un productor-consumidor con problemas
----------------------------------------------

.. code-block:: c

	struct semaf huecos, items;
	tipo_cerrojo mutex;
	ini_semaforo(huecos, N);
	ini_semaforo(items, 0);

	Productor_A()
	{
		struct elemento elem;
		while (1) {
			producir_elemento_A(&elem);
			bajar(huecos);
			lock(mutex);
			insertar(elem);
			unlock(mutex);
			subir(items);
		}
	} 

	Productor_B()
	{
		struct elemento elem;
		while (1) {
			producir_elemento_B(&elem);
			lock(mutex);
			bajar(huecos);
			insertar(elem);
			unlock(mutex);
			subir(items);
		}
	} 

	Consumidor()
	{
		struct elemento elem;
		while (1) {
			bajar(items);
			lock(mutex);
			retirar(&elem);
			unlock(mutex);
			subir(huecos);
			consumir_elemento(elem);
		}
	} 

.. include:: ../../my-footer_2.txt


