//= { //= "output": { //= "1": [ //= "1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\nho\nho\nho\nho\nho\nho\nho\nho\nho\nho\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [ //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= }, //= { //= "output": { //= "1": [ //= "hi\n987654321\n", //= true //= ], //= "2": [ //= "", //= true //= ] //= }, //= "children": [], //= "exit": "Success" //= } //= ], //= "exit": "Success" //= } use constellation::*; use std::mem; fn main() { init(Resources { mem: 20 * Mem::MIB, ..Resources::default() }); let pids = (0..10) .map(|_| { spawn( Resources { mem: 20 * Mem::MIB, ..Resources::default() }, FnOnce!(|parent| { let receiver = Receiver::::new(parent); let sender = Sender::::new(parent); println!("{}", receiver.recv().block().unwrap()); sender.send(1_234_567_890).block(); mem::drop((receiver, sender)); let receiver = Receiver::::new(parent); let sender = Sender::::new(parent); sender.send(String::from("ho")).block(); println!("{}", receiver.recv().block().unwrap()); }), ) .block() .expect("spawn() failed to allocate process") }) .collect::>(); let channels = pids .iter() .map(|&pid| (Sender::::new(pid), Receiver::::new(pid))) .collect::>(); for &(ref sender, ref _receiver) in channels.iter() { sender.send(String::from("hi")).block(); } for &(ref _sender, ref receiver) in channels.iter() { println!("{}", receiver.recv().block().unwrap()); } mem::drop(channels); let channels = pids .iter() .map(|&pid| (Sender::::new(pid), Receiver::::new(pid))) .collect::>(); for &(ref _sender, ref receiver) in channels.iter() { println!("{}", receiver.recv().block().unwrap()); } for &(ref sender, ref _receiver) in channels.iter() { sender.send(987_654_321).block(); } }