Para responder a la segunda pregunta, aquí hay un problema que puede beneficiarse mucho de Rx. Se llama "Hazte rico rápidamente".
Has desarrollado un juego con el mismo nombre y se está vendiendo bastante bien. Pero solo está disponible en sus tiendas al por mayor. Para facilitar el procesamiento de efectivo, tiene una cinta transportadora que fluye hacia usted.
(Por favor, siéntase libre de cambiar la historia anterior :))
Los vendedores colocan fajos de efectivo encuadernados sin etiquetas que indiquen la cantidad y el tipo de billetes en el fajo. Tu trabajo es ordenar y contar el dinero. Más adelante, cuando obtenga más dinero, puede contratar a otros para que lo ayuden.
En este caso, la fuente es una fuente asíncrona de fajos de dinero (Productor). Sus empleados y proveedores esperan dinero, pero debe consumir los tacos, desempaquetarlos y usar su lógica comercial personalizada para reempaquetar según corresponda para pagarlos.
Los vendedores se están ejecutando en su propio hilo, para que no tengan que esperar a que cuentes lo que tiran en el cinturón. Su tiempo se aprovecha mejor si le dicen cuándo hay más dinero disponible para contar, hasta entonces puede hacer otro trabajo.
Puede representar cada taco con un byte [].
Esta es una situación bastante común en el mundo real; cuando recupera cualquier recurso [por ejemplo, páginas web para motores de búsqueda, imágenes o videos] en una red o datos de periféricos, los obtiene en trozos de bytes (posiblemente con encabezados). En un solo subproceso, o en un entorno de subprocesos múltiples con el que es demasiado difícil trabajar, tiende a agregarlos y procesarlos. ¡¡Ya no!!