Hi rog,

As -> and <- are 'not racy', because they are 'core' language features, 
because runtime handles them, because they are guaranteed to 'work', I am 
asking how easy and useful to implement them as 'core' language features.

Thank you..

On Thursday, February 21, 2019 at 9:04:22 PM UTC+3, rog wrote:
>
> As others have said, such operations are inherently racy - when you 
> receive the message that a channel is empty, it may not be empty any more. 
> For that reason, it's not a good idea to add them as primitives to the 
> language.
>
> That said, it's not too hard to implement them yourself. We are talking 
> about buffered channels here, so an extra item being buffered should be OK. 
> So you can insert a goroutine in between sender and receiver that signals 
> when it can't receive on a channel (it's empty) or when it can't send on a 
> channel (it's full).
>
> Here's some code that implements those operations:
>
>     https://play.golang.org/p/2xyZnUI0imX
>
> Note that there are many other possible variants. For example, you might 
> want to send on the notification channel only when the channel has been 
> idle for some time.
>
>   cheers,
>     rog.
>
>
> On Thu, 21 Feb 2019 at 13:38, Serhat Şevki Dinçer <jfcg...@gmail.com 
> <javascript:>> wrote:
>
>> Hi,
>>
>> Say you have a buffered channel
>> ch := make(chan int, 10)
>>
>> Would it make sense and be easy to add the following directives to the Go 
>> language core?
>>
>> waitempty(ch)
>> blocks caller until ch buffer is empty
>>
>> waitfull(ch)
>> blocks caller until ch buffer is full
>>
>> This means there are 3 types of goroutines related to a channel:
>> - senders
>> - receivers
>> - observers
>>
>> There are nice possibilities with these, for example wait groups, 
>> resource usage alerts etc.
>>
>> What do you think?
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to