Simple script here:
a) constantly read from a socket and store values in an associative array
b) constantly read values from stdin and respond t/f if they already exist in the associative array
a & b are random events, not associated in any way.
The trick is accessing the array from both subprocesses (since putting a process in the background spawns it as a subprocess)
I'm thinking through the best strategy, and a few ideas occur, but I wonder if anyone has anything better in mind:
1) redirect the input from socket to stdin as a subprocess and handle both inputs in one while loop (data sizes are small, <30 characters, so I guess they will remain atomic?).
2) read the socket, then STDIN with small (0.1?) timeout values on read so as to mimic non-blocking I/O.
3) UPDATE: write the socket data to a file (actually have the other process write it directly to a file), then each time a request comes in to check if the value exists, process the entries in the file, adding them to the array (use file locking).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…