# What does data communication via RemoteChannel block?

**URL:** https://discourse.julialang.org/t/what-does-data-communication-via-remotechannel-block/7218
**Category:** Julia at Scale
**Created:** [November 21, 2017, 12:45pm UTC](https://discourse.julialang.org/t/what-does-data-communication-via-remotechannel-block/7218 "2017-11-21T12:45:51Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![usefulhyun](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/usefulhyun/32/1770_2.png) [@usefulhyun](https://discourse.julialang.org/u/usefulhyun)
#### Post date: [November 21, 2017, 12:45pm UTC](https://discourse.julialang.org/t/what-does-data-communication-via-remotechannel-block/7218/1 "2017-11-21T12:45:51Z")

</div>

Hi, there!

I use RemoteChannels as Communication Queues between processes.  
My problem is that tasks who are receiving and sending data via RemoteChannels using put! or take!  
do not surrender its control until data transferring finishes.  
And I do not know whether this operation is normal.  
I asked this before, I have not got any answer.  
So, I wonder if this behavior is intended or will be corrected not to keep its control during communication in the future.

---

<div class="post-metadata">

### Author: ![dfdx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dfdx/32/120_2.png) [@dfdx](https://discourse.julialang.org/u/dfdx)
#### Post date: [November 21, 2017, 2:32pm UTC](https://discourse.julialang.org/t/what-does-data-communication-via-remotechannel-block/7218/2 "2017-11-21T14:32:19Z")

</div>

I haven’t used `RemoteCahnnel`s, but ordinary `Channel`s have configurable capacity - they allow you to send up to a certain number of objects and then block until somebody reads from the channel. This works well in practice - in normal circumstances sender and receiver work concurrently, so when sender gets blocked, receiver immediately starts reading and vice versa.

With remote communication it should work even better - sender and receiver can work in parallel, writing and reading simultaneously, so the channel may even never get filled.

Consider an alternative option when sender is never blocked and continues writing data disregarding whether anybody reads them. Where the data should go? Should it be thrown away or collected in channel / network buffer until it blows up? For most systems both options are unsuitable, so channels just block control flow until the situation is resolved.
