You can do it with 2 (e.g. integer) channels per worker (requests and replies) and a task for each pair in the main process. That's so ugly I'd be tempted to write an interface to named system semaphores. Or just use a separate file for each worker.
On Monday, October 10, 2016 at 11:09:39 AM UTC-4, Zachary Roth wrote: > > Hi, everyone, > > I'm trying to save to a single file from multiple worker processes, but > don't know of a nice way to coordinate this. When I don't coordinate, > saving works fine much of the time. But I sometimes get errors with > reading/writing of files, which I'm assuming is happening because multiple > processes are trying to use the same file simultaneously. > > I tried to coordinate this with a queue/channel of `Condition`s managed by > a task running in process 1, but this isn't working for me. I've tried to > simiplify this to track down the problem. At least part of the issue seems > to be writing to the channel from process 2. Specifically, when I `put!` > something onto a channel (or `push!` onto an array) from process 2, the > channel/array is still empty back on process 1. I feel like I'm missing > something simple. Is there an easier way to go about coordinating multiple > processes that are trying to access the same file? If not, does anyone > have any tips? > > Thanks for any help you can offer. > > Cheers, > ---Zachary >