>
>
>>    1. I've read (here and elsewhere) that Julia does an implicit block 
>>    while waiting for data. Is there a workaround?
>>    
>> Do the blocking read asynchronously in a task. For network I/O (but not 
> file), `read` will only block at the task level. To end the read, `close` 
> the socket from another task.
>

Only a call to @async eof(conn) works as an asynchronous task; I'm not sure 
how that's going to help, except in the REPL. Any other attempt to read 
remotely is a segmentation fault that destroys the worker.

*Example (test function)*
@everywhere readSL(conn) = begin
  while true
    eof(conn)
    tmp = read(conn.buffer, UInt8, 520)
  end
end



Test call
julia> remotecall(6, readSL, conn);

julia> 
signal (11): Segmentation fault
uv_read_start at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown 
line)
start_reading at stream.jl:850
wait_readnb at stream.jl:373
eof at stream.jl:96
readSL at none:4
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown 
line)
jl_f_apply at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown 
line)
anonymous at multi.jl:920
run_work_thunk at multi.jl:661
run_work_thunk at multi.jl:670
jlcall_run_work_thunk_21322 at  (unknown line)
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown 
line)
anonymous at task.jl:58
unknown function (ip: 0x7f1d162898cc)
unknown function (ip: (nil))
Worker 6 terminated.
ERROR (unhandled task failure): EOFError: read end of file
 in read at stream.jl:929
 in message_handler_loop at multi.jl:878
 in process_tcp_streams at multi.jl:867
 in anonymous at task.jl:63

Am I doing something fundamentally wrong here?

Reply via email to