const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<string>(1);
const receiver = yield* Effect.gen(function*() {
yield* Effect.log("Receiving");
const msg = yield* Queue.take(queue);
yield* Effect.log("Received:", msg);
}).pipe(Effect.repeatN(3), Effect.fork);
const sender = yield* Effect.gen(function*() {
yield* Effect.log("Sending X");
yield* Queue.offer(queue, 'X');
yield* Effect.log("Sending Y");
yield* Queue.offer(queue, 'Y');
yield* Effect.log("Sending Z");
yield* Queue.offer(queue, 'Z');
}).pipe(Effect.fork);
yield* Fiber.joinAll([sender, receiver]);
});
const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<string>(1);
const receiver = yield* Effect.gen(function*() {
yield* Effect.log("Receiving");
const msg = yield* Queue.take(queue);
yield* Effect.log("Received:", msg);
}).pipe(Effect.repeatN(3), Effect.fork);
const sender = yield* Effect.gen(function*() {
yield* Effect.log("Sending X");
yield* Queue.offer(queue, 'X');
yield* Effect.log("Sending Y");
yield* Queue.offer(queue, 'Y');
yield* Effect.log("Sending Z");
yield* Queue.offer(queue, 'Z');
}).pipe(Effect.fork);
yield* Fiber.joinAll([sender, receiver]);
});