On Mon, Jul 5, 2021 at 12:41 PM Erman İmer <ermani...@gmail.com> wrote:
> I think it is not about the context's cancellation. The signal channel > should have a sufficient buffer size. > 1 is a sufficient buffer size. Note that there is *exactly one* read from c.ch in https://github.com/golang/go/blob/912f0750472dd4f674b69ca1616bfaf377af1805/src/os/signal/signal.go#L287 Therefore, even if the buffer was larger, any extra buffered signals would never be read. So the only possible point to having a larger buffer would be to prevent a writer from blocking on writing to it. However, as the documentation you are quoting is pointing out, `Notify` (the only writer to that channel) writes the signal non-blockingly. Therefore, there is never any danger of `Notify` getting blocked. The sentence you are quoting (making sure there is enough buffer size) is there to assure you have enough buffer space for a signal to get delivered - not to prevent `Notify` from blocking. Lastly, even *if* we needed more buffer space, your assumption that we need as much buffer space as there are signals is wrong. A single signal can be caught multiple times. So *if* we needed to be able to handle multiple signals (we don't - again, there is only one read, which is the one cancelling the context), we would also take into account that aspect. And there just is no actually correct size of the buffer, to make sure *all* signals get delivered - the number of signals that can happen before a reader is ready is unbounded. The code as it is currently is correct. > > Please check the former discussion which determined the Notify function's > description. > https://github.com/dominikh/go-staticcheck/issues/30 > > Best regards > > On Mon, Jul 5, 2021 at 1:28 PM Sean Liao <seankhl...@gmail.com> wrote: > >> What problem are you trying to solve? >> It only makes sense for NotifyContext to receive a single signal since a >> context can only be cancelled once >> >> On Monday, July 5, 2021 at 10:17:49 AM UTC+2 erma...@gmail.com wrote: >> >>> Sorry about the broken link, here is the line: >>> >>> https://github.com/golang/go/blob/912f0750472dd4f674b69ca1616bfaf377af1805/src/os/signal/signal.go#L284 >>> >>> On Monday, July 5, 2021 at 11:15:11 AM UTC+3 erma...@gmail.com wrote: >>> >>>> Hello, >>>> >>>> I have an improvement idea for the following line in the os/signals >>>> package. >>>> >>>> 284 c.ch = make(chan os.Signal, 1) >>>> >>>> Regarding the underlying function's (Notify) description ("the caller >>>> must ensure that channel has sufficient buffer space to keep up with the >>>> expected signal rate.") the code can be improved like the following code >>>> snippet: >>>> >>>> cap := len(signals) >>>> if cap == 0 { >>>> cap = 1 >>>> } >>>> c.ch = make(chan os.Signal, cap) >>>> >>>> I wanted to discuss here first before opening my first issue :) >>>> >>>> Best regards >>>> >>>> >>>> >>>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "golang-nuts" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/golang-nuts/PpUBZ1hxBbM/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/c1cd6bd9-5307-4a71-9caa-f13c354185ccn%40googlegroups.com >> <https://groups.google.com/d/msgid/golang-nuts/c1cd6bd9-5307-4a71-9caa-f13c354185ccn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > *Erman İmer* > > -- > 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. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CAAYkT3MhFw3nmx6Fduv0wRiy10uC1un3whkwYN%2BVNbJPvtApfA%40mail.gmail.com > <https://groups.google.com/d/msgid/golang-nuts/CAAYkT3MhFw3nmx6Fduv0wRiy10uC1un3whkwYN%2BVNbJPvtApfA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfFCfrL2f0PHfpHB8z6OjUmrnnzY2%2BGpsrKUTqeNEpHgSQ%40mail.gmail.com.