Closed
Description
We are lacking at least one critical primitive:
recv
onport<T>
with timeout that returns anoption<T>
It may be desirable to recv
from multiple ports at once, which may need
recv
on[port<T>]
that returns(uint, T)
recv
on[port<T>]
with timeout that returnsoption<(uint, T)>
recv_some
on[port<T>]
with timeout that returns[T]
or[(int, T)]
- These calls assume a fixed message type, it would be nice if it was possible to
recv
from a set of differently typed ports at once and match on the result somehow
These calls perhaps would be useful for sending to many channels:
send_any(value: T, channels: [chan<T>])
that returns theuint
vec index of the channel actually used- with the channel selected fairly from
channels
- with the channel selected fairly from
send_ready(value: T, channels: [chan<T>])
that returns theuint
vec index of the channel actually used- with the channel selected fairly among ready channels from
channels
- with the channel selected fairly among ready channels from
send_all(value: T, channels: [chan<T>])
- for convenience
Metadata
Metadata
Assignees
Labels
Type
Projects
Relationships
Development
No branches or pull requests
Activity
boggle commentedon Apr 7, 2012
Things have become better thanks to recv2, std::time etc but there still is no true way to recv with a timeout. This likely needs support by the runtime.
eholk commentedon Jul 25, 2012
This bug had a lot of pieces, which made it daunting and difficult to keep track of all that were done. I opened up a bunch of smaller bugs that reference this issue so we can keep track of them easier and keep them more manageable. Feel free to add comments about the desired semantics in all of them.
@boggle, I wrote the new bugs for the new protocol/pipe system, since I'm hoping to remove the port/chan system in favor of pipes. Does this work for you?
boggle commentedon Aug 4, 2012
I sadly haven't come round to looking at pipes but as long as the functionality I asked for while be there I am happy with that. On a very different note, are you aware of the disruptor project? It is the first true innovation in concurrency I have seen in a while and I keep wondering how one would implement that in rust.
pcwalton commentedon Aug 7, 2012
If all of the parts of this bug have individual bugs, can we close this one?
eholk commentedon Aug 7, 2012
Sure, although having this one open does give us a convenient place to go find a list of all the related bugs.
Merge pull request rust-lang#1255 from afonso360/abi-checker