Great! I liked Mill's lecture. After having seen it, here's my favourite:

*Clojure core.async*, lecture (45 mins). Rich Hickey discusses the 
motivation, design and use of the Clojure core.async library. He also talks 
about go. See https://www.infoq.com/presentations/clojure-core-async/ 
(lecture 22Nov2013) and 
https://clojure.org/news/2013/06/28/clojure-clore-async-channels 
(description).  Additionally you can download the soundtrack from this as 
an mp3.
Minutes into the lecture:
13.57 - CSP background
18.24 - The difference between blocking and parking. Also about IOC threads 
(Inversion of Control threads)
19.12 - The description of the difference between blocking and parking 

About *blocking*, I have a blog note myself: 
https://www.teigfam.net/oyvind/home/technology/092-not-so-blocking-after-all/ - 
Disclaimer <https://www.teigfam.net/oyvind/home/#standard_disclaimer>: no 
money, ads, gifts in my blog notes. Only fun and expenses. 

fredag 27. november 2020 kl. 12:19:11 UTC+1 skrev b.ca...@pobox.com:

> On Friday, 27 November 2020 at 10:32:11 UTC oyvin...@teigfam.net wrote:
>
>> Thread safety, concurrency safety, goroutines safety. The same stuff to 
>> me.  
>>
>> It's important that concurrent goroutines don't interfere with each other 
>> in such a way that internal state is compromised by other goroutines. 
>> Typically through access to internal data, through pointers.
>>
>
> Not just that, but also:
>
> -  any global variables.  Even reading an 'int' while some other goroutine 
> is updating it is unsafe; it may give undefined behavior.
>
> - concurrent read and write accesses to the same map or slice can cause 
> the program to panic.  Note that map and slice values contain hidden 
> pointers inside them.  So if two goroutines have the same map or slice 
> value, they are aliasing to the same underlying data.
>
> These can trip up people used to (say) Python, where such accesses are 
> atomic - primarily because of Python's Global Interpreter Lock.
>
> (There is sync.Map <https://golang.org/pkg/sync/#Map> which is 
> concurrency-safe, but if you need this, there's probably a better solution 
> in your architecture)
>  
>
>> If only go channels are used to communicate between goroutines, than that 
>> case is closed. That's one of the reasons they exist - also in other 
>> similar languages, with that aspect often based on CSP.
>>
>
> Here's a video explaining how channels can replace various concurrency 
> primitives: it's worth getting your head around.
> https://www.youtube.com/watch?v=5zXAHh5tJqQ
>

-- 
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/5d850534-af12-4820-994b-e9eb728f2d5an%40googlegroups.com.

Reply via email to