hmn/src/templates/src/fishbowls/parallel-programming/parallel-programming.html

10933 lines
420 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="chatlog">
<!-- Emojis by Twitter's Twemoji https://twemoji.twitter.com/ -->
<div class="chatlog__message-group">
<div id="chatlog__message-container-778955896704860160" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="778955896704860160">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>Topic:</strong> Approaches to parallel programming</span>
<span class="chatlog__edited-timestamp" title="23-Nov-20 08:42 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778956533991735336" class="chatlog__message-container " data-message-id="778956533991735336">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">hello there</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778956783254896680" class="chatlog__message-container " data-message-id="778956783254896680">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hellope!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778956901433868308" class="chatlog__message-container " data-message-id="778956901433868308">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Now that the topic is "Parallel programming", what is that anyway? There is this distinction of Parallelism vs Concurrency, popularized maybe also by Rob Pike: <a href="https://www.youtube.com/watch?v=oV9rvDllKEg" target="_blank">https://www.youtube.com/watch?v=oV9rvDllKEg</a></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778957036074827786" class="chatlog__message-container " data-message-id="778957036074827786">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:17 AM">04:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But I can never remember which is which, and it seems like not everybody makes that precise distinction</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778957864609120278" class="chatlog__message-container " data-message-id="778957864609120278">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">maybe another interesting distinction as a base for discussion, I found this yesterday: <a href="https://www.drdobbs.com/parallel/the-pillars-of-concurrency/200001985?pgno=2" target="_blank">https://www.drdobbs.com/parallel/the-pillars-of-concurrency/200001985?pgno=2</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778957929142288434" class="chatlog__message-container " data-message-id="778957929142288434">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">according to Pike, concurrency is handling lots of things at once, whereas parallelism is doing alot of things at once</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778958704299999292" class="chatlog__message-container " data-message-id="778958704299999292">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm having trouble understanding that. The way I remember it is that one is about authoring code as independent "trains of thought", the other is actually running code on multiple physical cores. But not quite sure about that</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778958905501286401" class="chatlog__message-container " data-message-id="778958905501286401">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">responsiveness versus throughput? <span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778959358498701333" class="chatlog__message-container " data-message-id="778959358498701333">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:26 AM">04:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">do we have anyone in the fishbowl at all who's been playing around with parallel programming at all or are we just a big group of beginners?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778959459829547028" class="chatlog__message-container " data-message-id="778959459829547028">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">isn't</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778959634785894440" class="chatlog__message-container " data-message-id="778959634785894440">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:27 AM">04:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">concurrency == breaking program into tasks that are independent from each other (threads baically)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778959739186577429" class="chatlog__message-container " data-message-id="778959739186577429">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:27 AM">04:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">parallelism == physically running few tasks on different cpu cores</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778960279526572052" class="chatlog__message-container " data-message-id="778960279526572052">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:30 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you look at "the three columns of concurrency" that I linked above, I'm mostly interested in the responsiveness pillar right now. But to make that not a pain to develop (e.g. by create a separate OS thread for each task), shared data locks (mutexes) are definitely needed</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778960600432771094" class="chatlog__message-container " data-message-id="778960600432771094">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:31 AM">04:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So, assuming that we're talking about both concurrency and parallelism here. Because one isn't very meaningful without the other, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778960843735302174" class="chatlog__message-container " data-message-id="778960843735302174">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:32 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i thought parallelism was more of the umbrella term given how computer hardware have developed during the last 25 years</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778960974216036383" class="chatlog__message-container " data-message-id="778960974216036383">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:32 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">let's go with that then <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778961287942111252" class="chatlog__message-container " data-message-id="778961287942111252">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:34 AM">04:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A realization that lead me into being interested in this topic recently has been how even a single machine is a concurrent and multithreaded thing. Not only do machines have multiple CPU cores, they also have a separate graphics processing unit, and all sort of other things that (for example) communicate through interrupts. It gets more pronounced of course when adding networking...</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778961516593676311" class="chatlog__message-container " data-message-id="778961516593676311">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:34 AM">04:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can't really do a plain <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">fgets()</span> or <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">fread()</span> anymore, it seems so wrong to me when I'm doing e.g. GUI on the same thread</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 04:35 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778961651742670849" class="chatlog__message-container " data-message-id="778961651742670849">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:35 AM">04:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The human interacting with the GUI is like a completely separate thread as well!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778962252987367424" class="chatlog__message-container " data-message-id="778962252987367424">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i'm more curious about the massively parallel part of the discussion, maximizing throughput and thereby optimizing for speed (running a single big task on multiple cpu threads to optimize for time)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778962439886340106" class="chatlog__message-container " data-message-id="778962439886340106">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:38 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the "embarassingly parallel" thing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778962681847218186" class="chatlog__message-container " data-message-id="778962681847218186">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a href="https://en.wikipedia.org/wiki/Embarrassingly_parallel" target="_blank">https://en.wikipedia.org/wiki/Embarrassingly_parallel</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778963038186897408" class="chatlog__message-container " data-message-id="778963038186897408">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah, monte carlo is a good example of that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778964631762632724" class="chatlog__message-container " data-message-id="778964631762632724">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:47 AM">04:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="Vegard#4618">@Vegard</span> <span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> the fishbowl has started</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778964963233628180" class="chatlog__message-container " data-message-id="778964963233628180">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">hello everyone (and thanks for the notification)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 04:48 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778965033774219304" class="chatlog__message-container " data-message-id="778965033774219304">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">do we have anyone who's played around with threads and parallelism here?</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="wave">
<img class="chatlog__emoji chatlog__emoji--small" alt="👋" src="files/1f44b-9E658.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778965119706988584" class="chatlog__message-container " data-message-id="778965119706988584">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:49 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">pinging you as well <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> <span class="chatlog__markdown-mention" title="AsafGartner#0955">@AsafGartner</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778965643743199234" class="chatlog__message-container " data-message-id="778965643743199234">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hello</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="blobwave">
<img class="chatlog__emoji chatlog__emoji--small" alt="blobwave" src="files/517109722340392960-8F464.png" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778965820272541737" class="chatlog__message-container " data-message-id="778965820272541737">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Distinguishing between Parallelism and Concurrency is extremely important to do. They are orthogonal concepts.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-778966001408540702" class="chatlog__message-container " data-message-id="778966001408540702">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Rob Pike's distinction is a good one.</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-778965883682160660" class="chatlog__message-container " data-message-id="778965883682160660">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so <span class="chatlog__markdown-mention" title="bumbread27#9116">@bumbread</span> is right; concurrency is basically the go/node idea where you can have lots of "things" (threads, green threads, coroutines, goroutines, ...) in-flight at the same time, but you can still do it all on a single core if that's all you have. and parallelism is more when things run truly in parallel (on different cores).</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966132114980905" class="chatlog__message-container " data-message-id="778966132114980905">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well maybe let's not worry about definitions for now</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966443232198677" class="chatlog__message-container " data-message-id="778966443232198677">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Concurrency is about <em>dealing with</em> lots of things at once.
Parallelism is about <em>doing</em> loads of things at once.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="ok_hand">
<img class="chatlog__emoji chatlog__emoji--small" alt="👌" src="files/1f44c-35C6F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966503466336286" class="chatlog__message-container " data-message-id="778966503466336286">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When does this distinction matter in practice? Except for performance, is it super important on how many cores (1 or many) I'm running my N concurrent threads?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966552631967745" class="chatlog__message-container " data-message-id="778966552631967745">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's hard to say what <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">dealing</span> means</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 04:55 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778966590413733890" class="chatlog__message-container " data-message-id="778966590413733890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:55 AM">04:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">or is it really happening <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">at once</span>?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966592204701716" class="chatlog__message-container " data-message-id="778966592204701716">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">concurrency doesn't need <a class="inserted-after" href="https://en.wikipedia.org/wiki/Thread_safety" target="_blank">thread-safety</a> (to start with a difference that matters in practice)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 04:55 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966718776344576" class="chatlog__message-container " data-message-id="778966718776344576">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In programming:
Concurrency is the <em>composition</em> of independently executing processes.
Parallelism is the simultaneous <em>execution</em> of (possibly related) computations.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778966790406537216" class="chatlog__message-container " data-message-id="778966790406537216">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well ok</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778967206616367124" class="chatlog__message-container " data-message-id="778967206616367124">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Purely parallel problems could be classed as <a class="inserted-after" href="https://en.wikipedia.org/wiki/Idempotence" target="_blank">idempotent</a>. <span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span>'s link to "Embarrassingly Parallel" is the essence of this.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778967392419053590" class="chatlog__message-container " data-message-id="778967392419053590">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">why does concurrency not need thread-safety <span class="chatlog__markdown-mention" title="Vegard#4618">@Vegard</span>? What is that thread-safety here, precisely?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778967574305439805" class="chatlog__message-container " data-message-id="778967574305439805">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 04:59 AM">04:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Are you thinking about needing less synchronization, when you have truly independent tasks? Or things like (non-) <a class="inserted-after" href="https://en.wikipedia.org/wiki/Preemption_(computing)" target="_blank">preemption</a>?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778967650872983584" class="chatlog__message-container " data-message-id="778967650872983584">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's generally independent tasks</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778968018377637908" class="chatlog__message-container " data-message-id="778968018377637908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Idempotent in this case means independent.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778968096614514708" class="chatlog__message-container " data-message-id="778968096614514708">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:01 AM">05:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Processes do not effect each other.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778968213777416192" class="chatlog__message-container " data-message-id="778968213777416192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span> I think you meant <span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> but I can answer too <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"> first of all, I think thread safety can be many different things. You meantioned preemption, that's one part of it -- if you only have 1 CPU and you fully control when the next thread executes, then you can be a lot more relaxed about a lot of things, since you <em>know</em> no other CPU will be able to access your variables concurrently. in other words, you don't need locking at all.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778968273005576232" class="chatlog__message-container " data-message-id="778968273005576232">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am using the term <em>process</em> in the general sense here to encompass the general idea.
e.g. types of processes: <a class="inserted-after" href="https://en.wikipedia.org/wiki/Multi-core_processor" target="_blank">core</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Thread_(computing)" target="_blank">thread</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Process_(computing)" target="_blank">os process</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Fiber_(computer_science)" target="_blank">fibre</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Green_threads" target="_blank">green-thread</a>, etc</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-778968408754487307" class="chatlog__message-container " data-message-id="778968408754487307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Now I have the definitions done and over with, let's gone down the dirty stuff <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-778968312234901545" class="chatlog__message-container " data-message-id="778968312234901545">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so for example: imagine you're developing a network layer which is something that is highly asynchronous by definition.
there are a lot of little details you have to handle: has the connection timed out? what data have you received? was there a network error? did the user put a nintendo switch in the microwave so the network connection broke?
with concurrency you can actually ditch all means of synchronization and have it still happen form a perceived point in "parallel"</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:02 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778969257579905045" class="chatlog__message-container " data-message-id="778969257579905045">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:05 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Unless I'm misunderstanding what you mean, I disagree. You often need synchronization with concurrency. Many webapps have synchronization bugs even though they are entirely single-threaded.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778969719805575269" class="chatlog__message-container " data-message-id="778969719805575269">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:07 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ah, yeah, i meant specifically cooperative concurrency (for example fibers or lua coroutines running in a single-thread or cooperative threads pinned to one core)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970348153864242" class="chatlog__message-container " data-message-id="778970348153864242">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="AsafGartner#0955">@AsafGartner</span> that sounds like a problem with the single threaded event driven process rather than a simple form of monte carlo where you have one thread that creates jobs and takes back the result afterwards with no interaction in-between each job thread</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970405142659082" class="chatlog__message-container " data-message-id="778970405142659082">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="AsafGartner#0955">@AsafGartner</span> can you give an example of that?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970587678244875" class="chatlog__message-container " data-message-id="778970587678244875">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Synchronization is for shared state. If you don't have shared state then it's no problem, but if you do you still need to enforce synchronization even in non-parallel systems.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970604333432852" class="chatlog__message-container " data-message-id="778970604333432852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="AsafGartner#0955">@AsafGartner</span> web apps are sometimes spawned in parallel by the web server, so even though the program itself is single-threaded, there can still be multiple instances of it running in parallel. not sure if this is what you're talking about</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970691336536076" class="chatlog__message-container " data-message-id="778970691336536076">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The common bug is <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">check state -&gt; make HTTP request -&gt; perform action without checking if the state changed and assuming it didn't</span>.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970742393667614" class="chatlog__message-container " data-message-id="778970742393667614">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would like to state that synchronization is needed whenever two processes (in the sense of <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> 's definition) communicate. Where communication means any kind of information sharing</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778970848185942026" class="chatlog__message-container " data-message-id="778970848185942026">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A more concrete example, which I've encountered in several apps, is you hit play in a music app, it starts buffering the song, you hit pause, and when it's done buffering it plays anyway.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778971245311295520" class="chatlog__message-container " data-message-id="778971245311295520">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that can happen even in a 100% single-thread application where you flip some global bools and don't check them properly though</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778971427507273739" class="chatlog__message-container " data-message-id="778971427507273739">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:14 AM">05:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so for example, today an user reported that on Spelunky 2 if you freeze an enemy that grabs the player in a certain point in time</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778971472348839958" class="chatlog__message-container " data-message-id="778971472348839958">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:14 AM">05:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and then approach the enemy, it grabs you while frozen</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778971491630841856" class="chatlog__message-container " data-message-id="778971491630841856">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Exactly. That's why synchronization is not just for parallel operations.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778971859429228575" class="chatlog__message-container " data-message-id="778971859429228575">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the general idea is that "you don't need as much work to avoid things going bad with concurrency compared to full parallelism"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778972077214400512" class="chatlog__message-container " data-message-id="778972077214400512">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If we're assuming preemption, I'm still not sure what's a situation where it matters if a concurrent application is being run with parallelism or not.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778972329845063682" class="chatlog__message-container " data-message-id="778972329845063682">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:17 AM">05:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Non-preemption (where each process controls when it gives up control of the CPU) could be seen as just like preemption with a global mutex</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778972508443115520" class="chatlog__message-container " data-message-id="778972508443115520">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">except it's efficient, yes</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778972710650642442" class="chatlog__message-container " data-message-id="778972710650642442">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">isn't that more of a specific <a class="inserted-after" href="https://en.wikipedia.org/wiki/Node.js" target="_blank">node.js</a> issue as it's a preemptive event driven framework?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778972869953585162" class="chatlog__message-container " data-message-id="778972869953585162">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:20 AM">05:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">never went down the javascript rabbithole personally</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778972903126728764" class="chatlog__message-container " data-message-id="778972903126728764">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Javascript is non-preemptive</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778972914884149270" class="chatlog__message-container " data-message-id="778972914884149270">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:20 AM">05:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would say</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778973320577679360" class="chatlog__message-container " data-message-id="778973320577679360">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i'm not sure but i also believe it's non-preemptive?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778973839140192257" class="chatlog__message-container " data-message-id="778973839140192257">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">classic javascript i believe is non-preemptive yes, however google chrome attempts to make it preemptive to increase speed, which was later forked into node.js</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778973855339380756" class="chatlog__message-container " data-message-id="778973855339380756">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well it added worker threads AFAIK, so that changed maybe. But fundamentally it's how I understand a non-preemptive runtime</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778974149572821002" class="chatlog__message-container " data-message-id="778974149572821002">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:25 AM">05:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a generally non-preemptive framework would maybe also allow a process to choose what other threads can be scheduled while this process is waiting for an I/O request to complete</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:25 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778974159095070781" class="chatlog__message-container " data-message-id="778974159095070781">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I've seen infinite loops hang the whole execution (of a web-server)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:25 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-778974423793139713" class="chatlog__message-container " data-message-id="778974423793139713">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but either way, I don't think non-parallel preemptive systems interesting or useful xD</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-778974243597320222" class="chatlog__message-container " data-message-id="778974243597320222">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Worker threads run in a separate context and you have to communicate with them over a message channel, so you don't have parallelism issues there.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778974461100556348" class="chatlog__message-container " data-message-id="778974461100556348">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, this is an important point <span class="chatlog__markdown-mention" title="AsafGartner#0955">@AsafGartner</span> . There are certain frameworks (such as actors, channels) that make parallelism much easier</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:26 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778974531711926292" class="chatlog__message-container " data-message-id="778974531711926292">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:26 AM">05:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they encapsulate the needed synchronization, and so dramatically reduce manual work</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778975301421367307" class="chatlog__message-container " data-message-id="778975301421367307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:29 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> are you saying you don't think coroutines or green threads are ever interesting, or that they're only interesting if you can (also) schedule them in parallel? <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778975483941093406" class="chatlog__message-container " data-message-id="778975483941093406">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:30 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that "preemptive non-parallel concurrency" is not interesting in general</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778975495034503199" class="chatlog__message-container " data-message-id="778975495034503199">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:30 AM">05:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Coroutine" target="_blank">coroutines</a> are great (obviously mandatory everything I say is my opinion and not a fact blablablablabla)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:31 AM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778975709309698049" class="chatlog__message-container " data-message-id="778975709309698049">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:31 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But coroutines aren't always fair.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778975952972939265" class="chatlog__message-container " data-message-id="778975952972939265">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:32 AM">05:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Like when your older brother hogs the controller and you have to get your mom to do some preemption.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="joy">
<img class="chatlog__emoji chatlog__emoji--small" alt="😂" src="files/1f602-20224.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778976417018019902" class="chatlog__message-container " data-message-id="778976417018019902">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but fairness is not always a desirable feature, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778976606114414612" class="chatlog__message-container " data-message-id="778976606114414612">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In practice I would agree. In theory I think there's almost always a limit to the unfairness you're willing to have in a system.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778977142692249621" class="chatlog__message-container " data-message-id="778977142692249621">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure if the fairness is really a big issue in practice. you can kinda see when you're going to have a lot of work to do and yield manually from time to time</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778977332198506526" class="chatlog__message-container " data-message-id="778977332198506526">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's definitely an issue when you're doing some number crunching</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778977348233199647" class="chatlog__message-container " data-message-id="778977348233199647">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:37 AM">05:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">such as decoding a JPG</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778977435432910889" class="chatlog__message-container " data-message-id="778977435432910889">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:38 AM">05:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">software is in some respects easier to architect when you just assume preemption</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778977505105018890" class="chatlog__message-container " data-message-id="778977505105018890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:38 AM">05:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and combine pieces that you know will be run in parallel</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778977792582615050" class="chatlog__message-container " data-message-id="778977792582615050">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the worst thing is when it's a surprise</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778977862349750292" class="chatlog__message-container " data-message-id="778977862349750292">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you assume preemption and combine pieces that you know that will be run in parallel, then it's hard to replace it with concurrency, yes, that sounds about right</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778977979464155137" class="chatlog__message-container " data-message-id="778977979464155137">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I dislike coroutines in the traditional sense of them. Because they are hard to reason about. They don't act like a separate "process".</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:40 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778978286888943657" class="chatlog__message-container " data-message-id="778978286888943657">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i like the idea about them, you can go say i need that later but it's big so please start reading and caching it from disk now so it'll be ready later</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778978509539639296" class="chatlog__message-container " data-message-id="778978509539639296">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:42 AM">05:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">although i haven't toyed around with them so i'll have to see in practice when i get around to that</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778978509707149344" class="chatlog__message-container " data-message-id="778978509707149344">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the idea of coroutines might be that we want to write linear code (top-to-bottom) while still interacting with other threads in a totally synchronized fashion</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778978601152151582" class="chatlog__message-container " data-message-id="778978601152151582">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:42 AM">05:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what you describe sounds more like asynchrony to me <span class="chatlog__markdown-mention" title="Wayward#3376">@Wayward</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778978735138275328" class="chatlog__message-container " data-message-id="778978735138275328">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for reading from disk, i think that's a great thing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778978803182731284" class="chatlog__message-container " data-message-id="778978803182731284">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's kind of easier describing a transition like "change opacity during X time, then change scene, then change opacity during X time" than pretty much any other alternative</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778978927405563906" class="chatlog__message-container " data-message-id="778978927405563906">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:44 AM">05:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they are really hard to follow and debug and everything if you use them a lot in a dogma-like way, yes</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778979548183396352" class="chatlog__message-container " data-message-id="778979548183396352">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span> coroutines are very often used to implement that asynchronicity</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778981873702666250" class="chatlog__message-container " data-message-id="778981873702666250">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are so many concepts and nuances to this whole parallel/concurrent thing <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"> would be cool to have an infographic or something relating all the terms to each other</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778981999477260338" class="chatlog__message-container " data-message-id="778981999477260338">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes. I didn't really understand what you meant <span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> . And what is it anyway, that is "acting like a separate process" (like <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> sasys)?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982086509068298" class="chatlog__message-container " data-message-id="778982086509068298">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:56 AM">05:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In my mind, coroutines are something that the OS is unaware of</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982103878467625" class="chatlog__message-container " data-message-id="778982103878467625">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:56 AM">05:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">basically I'm thinking of fibers</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982257633263636" class="chatlog__message-container " data-message-id="778982257633263636">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:57 AM">05:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Fibers btw. are seen as a failed experiment</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:58 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982318299414540" class="chatlog__message-container " data-message-id="778982318299414540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:57 AM">05:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/POSIX" target="_blank">POSIX</a> removed their implementation, and Microsoft deprecated them long ago</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982416072966225" class="chatlog__message-container " data-message-id="778982416072966225">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:58 AM">05:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because with them, we not only have process-global and thread-global storage, but also fiber-global storage</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 05:58 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982454026305566" class="chatlog__message-container " data-message-id="778982454026305566">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:58 AM">05:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and all the related confusion that comes with it</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982486486417478" class="chatlog__message-container " data-message-id="778982486486417478">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:58 AM">05:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">also when scheduling a single fiber on multiple OS threads</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982490970128385" class="chatlog__message-container " data-message-id="778982490970128385">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:58 AM">05:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and so on</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778982618112720938" class="chatlog__message-container " data-message-id="778982618112720938">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">glibc still has <a class="inserted-after" href="https://man7.org/linux/man-pages/man2/setcontext.2.html" target="_blank">setcontext/swapcontext/etc</a>. I think the reason it was deprecated in POSIX was because it had a bunch of requirements WRT signals, which meant that you need 2+ syscalls per fiber switch, which is slow.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778982803148374067" class="chatlog__message-container " data-message-id="778982803148374067">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 05:59 AM">05:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so it's still fully possible to define your own semantics and get good performance out of them. just not with an implementation following the POSIX specification</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778982827948638230" class="chatlog__message-container " data-message-id="778982827948638230">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">fibers can also block other fibers that are run on the same thread</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778982887365541908" class="chatlog__message-container " data-message-id="778982887365541908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 05:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's the point of having fibers (blocking other fibers that are run on the same thread)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:00 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778983130504626228" class="chatlog__message-container " data-message-id="778983130504626228">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">right, that was actually my initial point</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778983245965557851" class="chatlog__message-container " data-message-id="778983245965557851">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:01 AM">06:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Though, another intended use case for them was to be more resource friendly and to involve the kernel less</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778983361720090634" class="chatlog__message-container " data-message-id="778983361720090634">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:01 AM">06:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(In Windows, they then tried to introduce this other thing, called <a class="inserted-after" href="https://docs.microsoft.com/en-us/windows/win32/procthread/user-mode-scheduling" target="_blank">User mode scheduling</a>)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:02 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778983531799511062" class="chatlog__message-container " data-message-id="778983531799511062">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="AsafGartner#0955" data-user-id="239737951410454528">AsafGartner</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm curious to know if UMS is actually useful.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778983622014140447" class="chatlog__message-container " data-message-id="778983622014140447">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:02 AM">06:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Apparently it was made specifically for the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Microsoft_SQL_Server" target="_blank">MSSQL</a> team.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778985288377827358" class="chatlog__message-container " data-message-id="778985288377827358">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:09 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Fibres were a failed experiment because they were not what people actually wanted.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778985469916086322" class="chatlog__message-container " data-message-id="778985469916086322">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:10 AM">06:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Effectively, people usually (not always) wanted a form of green thread be it N:1 or M:N.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778985557765128203" class="chatlog__message-container " data-message-id="778985557765128203">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That I can agree, but now again, people usually (not always) wanted OOP and we know how that went :)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778989367880056853" class="chatlog__message-container " data-message-id="778989367880056853">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> People rarely know what they want before trying stuff out.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778985583904292904" class="chatlog__message-container " data-message-id="778985583904292904">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">aren't fibers and green threads synonyms?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778985914160381964" class="chatlog__message-container " data-message-id="778985914160381964">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">fibers are always cooperative and something that is controlled by the programmer (so the programmer has to decide when does the fiber start, where does it execute, at which point it is stopped, if/how is it scheduled...)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:13 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778986440377499699" class="chatlog__message-container " data-message-id="778986440377499699">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, okay. so you can use fibers to implement green threads</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778986826270113812" class="chatlog__message-container " data-message-id="778986826270113812">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">green threads being "user scheduled threads"?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778987119494299658" class="chatlog__message-container " data-message-id="778987119494299658">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:16 AM">06:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I looked up how Haskell does its runtime - they have sort of M:N green threads as well</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778987218983190529" class="chatlog__message-container " data-message-id="778987218983190529">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:17 AM">06:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">basically they can do it because they have a <em>lot</em> of allocation going on</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:18 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778987290306281492" class="chatlog__message-container " data-message-id="778987290306281492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:17 AM">06:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so each allocation is potentially a fiber switching point</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:19 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778987351933976608" class="chatlog__message-container " data-message-id="778987351933976608">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:17 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's a bit sad.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778987367594983454" class="chatlog__message-container " data-message-id="778987367594983454">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:17 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that only falls flat in tight loops where all the allocation has been optimized out</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778987551645630515" class="chatlog__message-container " data-message-id="778987551645630515">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:18 AM">06:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't think there is another way of doing scheduling in userland, or is there? How would that UMS work, anyway?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988044510035969" class="chatlog__message-container " data-message-id="778988044510035969">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">on Linux at least you can register a timer that will send a signal, then you can context switch from the signal handler. but this does go through the kernel as well, so it's not that great for performance</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988115657883699" class="chatlog__message-container " data-message-id="778988115657883699">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, in the end everything is semantic, that depends on what you consider "doing scheduling"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988273556914187" class="chatlog__message-container " data-message-id="778988273556914187">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean (pseudo-) preemptively scheduling a fiber in place of another fiber</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778988362509844511" class="chatlog__message-container " data-message-id="778988362509844511">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:21 AM">06:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">to get what OS threads are implemented at a lower cost (with fibers)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988465467293718" class="chatlog__message-container " data-message-id="778988465467293718">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:22 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah, but like, you can implement coroutines or continuations without fibers</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778988592239214613" class="chatlog__message-container " data-message-id="778988592239214613">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:22 AM">06:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and if it's just swapping rsp and a couple of things, can it be considered scheduling?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988610421784616" class="chatlog__message-container " data-message-id="778988610421784616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:22 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">wouldn't coroutines always involve switching out the call stack?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988722167087107" class="chatlog__message-container " data-message-id="778988722167087107">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are also stackless coroutines, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988818551406632" class="chatlog__message-container " data-message-id="778988818551406632">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Switching out the call stack is basically how I understand "Fibers". Though, the term is also associated with the Win32 Fiber API</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778988858675036160" class="chatlog__message-container " data-message-id="778988858675036160">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:23 AM">06:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">stackless coroutines is something else</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778988937111928852" class="chatlog__message-container " data-message-id="778988937111928852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that's why it depends on semantics :)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-778989198329511996" class="chatlog__message-container " data-message-id="778989198329511996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">also you could like, code in continuation passing style without a stack itself</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-778989055504416818" class="chatlog__message-container " data-message-id="778989055504416818">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Stackless coroutines can be done when the compiler can compute the max stack size that a particular function call (hierarchy) needs</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-778989530782236683" class="chatlog__message-container " data-message-id="778989530782236683">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The compiler can then place that "process" in an arbitrary memory location. It could be allocated as a "value type".</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:27 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778989589796618293" class="chatlog__message-container " data-message-id="778989589796618293">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:26 AM">06:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well yeah, I'm not sure, I guess it's still implemented using rsp</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778994964772159498" class="chatlog__message-container " data-message-id="778994964772159498">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:47 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">since it's quiet -- I'm just curious if anybody here is doing game dev and if so, what kind of parallel code do you see in practice in whatever games/engines you're working on?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995086624817172" class="chatlog__message-container " data-message-id="778995086624817172">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:48 AM">06:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I assume most people have a separate audio thread at the very least. what else? do you scale number of threads with number of CPUs?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995121625890856" class="chatlog__message-container " data-message-id="778995121625890856">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:48 AM">06:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what kind of synchronisation do you use?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778995384420794369" class="chatlog__message-container " data-message-id="778995384420794369">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:49 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm doing a GUI for industrial automation. I also have a little jigsaw puzzle game that I intend to network (match making, cooperative gaming)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995574669705216" class="chatlog__message-container " data-message-id="778995574669705216">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:50 AM">06:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I have background processes as well, and I want to be able to cancel them quickly</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995695020408843" class="chatlog__message-container " data-message-id="778995695020408843">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:50 AM">06:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The background processes do file and networking I/O</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995771801862164" class="chatlog__message-container " data-message-id="778995771801862164">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:51 AM">06:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so I've been experimenting with layering them on top of async IO</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778995971304325130" class="chatlog__message-container " data-message-id="778995971304325130">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:51 AM">06:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and trying to find a way to write them in a linear top-to-bottom fashion - basically in a conventional blocking style, with the exception that they should react to custom cancellation signals</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:55 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778996004958502912" class="chatlog__message-container " data-message-id="778996004958502912">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:52 AM">06:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and trying to make that code not be a mess</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778996641234944051" class="chatlog__message-container " data-message-id="778996641234944051">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">since it's quiet -- I'm just curious if anybody here is doing game dev and if so, what kind of parallel code do you see in practice in whatever games/engines you're working on?
</div></div><span class="chatlog__markdown-mention" title="Vegard#4618">@Vegard</span> In indie games it's quite rare for something other than loading / audio and sometimes input
And when done it's usually not worth it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778996960580337715" class="chatlog__message-container " data-message-id="778996960580337715">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> what do you mean with "when done"? remaking the whole game after release to implement threading?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778997161769304094" class="chatlog__message-container " data-message-id="778997161769304094">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Meaning that on games than I've worked, removing multi-threading has often provided better performance</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778997476375265301" class="chatlog__message-container " data-message-id="778997476375265301">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:57 AM">06:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure how much into detail I can go? but for example in a game we worked on that used a parallelized scripting language with a reference counting gc</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778997572416569384" class="chatlog__message-container " data-message-id="778997572416569384">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 06:58 AM">06:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">removing all forms of threading and replacing it with concurrency, provided better performance</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778997612745326632" class="chatlog__message-container " data-message-id="778997612745326632">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="Wayward#3376">@Wayward</span> I think it was meant as "when people <em>do</em> write their games to make use of multithreading it doesn't give you any wins in terms of performance"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778997922364784640" class="chatlog__message-container " data-message-id="778997922364784640">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 06:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which I'm sure is not true for AAA where they do have e.g. separate render threads</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 06:59 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778998442390716428" class="chatlog__message-container " data-message-id="778998442390716428">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but AAAs are usually not CPU-bound by stuff that is often associated with CPU (AI, pathfinding, networking, world generation...)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778999299039952937" class="chatlog__message-container " data-message-id="778999299039952937">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:05 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">to me it sounds like the bottleneck is the kernel switching/synchronization when working with threads or am i wrong?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778999406723989568" class="chatlog__message-container " data-message-id="778999406723989568">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:05 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">also cache thrashing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778999620419715072" class="chatlog__message-container " data-message-id="778999620419715072">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:06 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's being bound by the cpu cache?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-778999772119826492" class="chatlog__message-container " data-message-id="778999772119826492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:06 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">removing all forms of threading and replacing it with concurrency, provided better performance
</div></div>That doesn't mean anything.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-778999883889508362" class="chatlog__message-container " data-message-id="778999883889508362">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:07 AM">07:07</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If your problem was parallelizable and also concurrent, you can do both.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:07 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779000150696919051" class="chatlog__message-container " data-message-id="779000150696919051">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But how much of both is a complicated question</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-778999911575453697" class="chatlog__message-container " data-message-id="778999911575453697">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:07 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">indie-games are more often than not cache-bound/access</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779000221367664670" class="chatlog__message-container " data-message-id="779000221367664670">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes... it's complicated, most parallelizable tasks end up taking less than what the context switch may take.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:10 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779000347733655632" class="chatlog__message-container " data-message-id="779000347733655632">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:09 AM">07:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Big things that are parallelizable, like the zombies in they are billions or collisions in physics engines it ok</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:10 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779000399097102357" class="chatlog__message-container " data-message-id="779000399097102357">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:09 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I have noticed a lot of beginners to parallelizing things (and I am by no means an expert either), do it because they think it will make things faster, when in reality their problem could be made extremely fast on a single thread and multiple threads would slow things down.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779000612959682580" class="chatlog__message-container " data-message-id="779000612959682580">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">your point being multithreading primarily having benefits assuming the code is already optimized?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779000674318286920" class="chatlog__message-container " data-message-id="779000674318286920">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779000709973803009" class="chatlog__message-container " data-message-id="779000709973803009">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:10 AM">07:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For "beginners", at least.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779000785191174206" class="chatlog__message-container " data-message-id="779000785191174206">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:11 AM">07:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Sometimes naïve multithreading can help a lot too.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779000830141530123" class="chatlog__message-container " data-message-id="779000830141530123">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:11 AM">07:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. multithreading a parser</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779000952782061599" class="chatlog__message-container " data-message-id="779000952782061599">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:11 AM">07:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A basic parser for a language can have a parsing queue for new files to parse and then workers to parse each file.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779001008768548874" class="chatlog__message-container " data-message-id="779001008768548874">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:11 AM">07:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The only synchronization point is when one worker add a new file to parse to the queue.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779001185624391693" class="chatlog__message-container " data-message-id="779001185624391693">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">multithreading always has a higher cost than running in single-thread</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779001249760018453" class="chatlog__message-container " data-message-id="779001249760018453">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so it's better to use it when needed rather than by default</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-779001240499126283" class="chatlog__message-container " data-message-id="779001240499126283">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">As with other non-multithreaded problems, it's a lot about reducing the overhead by doing more work per cost</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779001273465700372" class="chatlog__message-container " data-message-id="779001273465700372">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i.e. batch the shit out of it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779001500118679593" class="chatlog__message-container " data-message-id="779001500118679593">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you want to use multiple processes by default, you will require some sort of system that can schedule things efficiently for the numerous amount of works e.g. M:N threading (e.g. Go)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779001581021823036" class="chatlog__message-container " data-message-id="779001581021823036">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:14 AM">07:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a href="https://en.wikipedia.org/wiki/Thread_(computing)#M:N_(hybrid_threading)" target="_blank">https://en.wikipedia.org/wiki/Thread_(computing)#M:N_(hybrid_threading)</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779002170321534987" class="chatlog__message-container " data-message-id="779002170321534987">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what's the pros and cons of multiple processes in the task manager (google chrome) vs a single process with multiple threads?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779002708936884265" class="chatlog__message-container " data-message-id="779002708936884265">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To be clear, I am using the term "process" in a very general sense.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779002784527286323" class="chatlog__message-container " data-message-id="779002784527286323">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The benefit is process isolation</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779003391803129866" class="chatlog__message-container " data-message-id="779003391803129866">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> but even if you have efficient scheduling you still need to layout things in a way that it doesn't thrash, then use algorithms that are thread safe and slower or pay for the extra cost of locking (and either annoy the scheduler to get kicked earlier or pay the context switch)... And in the end you end up with something that makes a worse use for a system if that system is shared by other programs</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779003446849568778" class="chatlog__message-container " data-message-id="779003446849568778">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Exactly!</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="laughing">
<img class="chatlog__emoji chatlog__emoji--small" alt="😆" src="files/1f606-6F8AE.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779003521151664159" class="chatlog__message-container " data-message-id="779003521151664159">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:21 AM">07:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A generic algorithm cannot know how to optimize your specific problem.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779003538994757672" class="chatlog__message-container " data-message-id="779003538994757672">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:21 AM">07:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Computers are dumb!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779003751364952145" class="chatlog__message-container " data-message-id="779003751364952145">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:22 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so basically, for it to be useful, you either need a huge cache or really optimized memory usage?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779003829525282816" class="chatlog__message-container " data-message-id="779003829525282816">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">no, well, or really separate tasks</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779003965999415307" class="chatlog__message-container " data-message-id="779003965999415307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:23 AM">07:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for example, in a game we recently released we were running liquids simulation and particles in threads separate from the main loop</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004058576355339" class="chatlog__message-container " data-message-id="779004058576355339">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Optimized memory usage is a different problem.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779004110045184051" class="chatlog__message-container " data-message-id="779004110045184051">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:24 AM">07:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That still exists in single threading problems.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779004178236047420" class="chatlog__message-container " data-message-id="779004178236047420">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:24 AM">07:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And not really a parallelism specific problem</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004220119449660" class="chatlog__message-container " data-message-id="779004220119449660">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, I mean you could have theoretically a game fit in a single cache-line</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:25 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779004244258324551" class="chatlog__message-container " data-message-id="779004244258324551">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:24 AM">07:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but not be parallel-friendly</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004456108032031" class="chatlog__message-container " data-message-id="779004456108032031">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a 64-byte game? <img loading="lazy" class="chatlog__emoji " alt="🤔" title="thinking" src="files\twemoji_1f914.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004522903240716" class="chatlog__message-container " data-message-id="779004522903240716">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's a theoretical exercise xD</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779004540295839755" class="chatlog__message-container " data-message-id="779004540295839755">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:25 AM">07:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">not daring anyone to do so</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004608005668894" class="chatlog__message-container " data-message-id="779004608005668894">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's not a bad dare.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004688745627658" class="chatlog__message-container " data-message-id="779004688745627658">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">just saying that not being cache friendly (when doing multithreaded stuff) isn't related to using a huge amount of memory or optimizing</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:26 AM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004891599077387" class="chatlog__message-container " data-message-id="779004891599077387">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> can we just jump straight to the long version?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779004960158384129" class="chatlog__message-container " data-message-id="779004960158384129">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what long version?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779004999854194708" class="chatlog__message-container " data-message-id="779004999854194708">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:27 AM">07:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">oh that's right, the game</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779005356634275871" class="chatlog__message-container " data-message-id="779005356634275871">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:29 AM">07:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">regarding that game I was talking about,
we're now changing it so that instead of running separate systems on separate threads
everything will end up running in the same thread in order
this allows us to free cores so that we can actually run a separate game simulation on each core
which solves a harder problem regarding online multiplayer
point being: using multithreading for things that do not require it might actually prevent the program from reaching its full potential</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779006343267745874" class="chatlog__message-container " data-message-id="779006343267745874">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:33 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">single threaded applications are recommended until no longer viable, what about the latter case?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779006697980559360" class="chatlog__message-container " data-message-id="779006697980559360">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can imagine a lot of cases where you actually want multi-threading eh? I mean for example: a compiler, a baking process, a simulation that can go faster than realtime...
It just feels a bit sad to have a thread switched out because someone decided that browsers need to have an insane level of parallelism and the gpu driver decided to spawn 30 threads in your game.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:36 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779007248202596362" class="chatlog__message-container " data-message-id="779007248202596362">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">as long as those 30 threads are all pinned to the same core that's fine, no?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779007904912113684" class="chatlog__message-container " data-message-id="779007904912113684">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">maybe, I think so... It didn't happen on any of our machines so we couldn't investigate it enough</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779009807335686144" class="chatlog__message-container " data-message-id="779009807335686144">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One thing some people in the audience are wanting to be discussed is the relation between parallelism and concurrency, and how that relates to different "models".</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010050249326652" class="chatlog__message-container " data-message-id="779010050249326652">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:47 AM">07:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The relation is with regards to how the separate processes/threads communicate together.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010124089786378" class="chatlog__message-container " data-message-id="779010124089786378">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:48 AM">07:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Be it either communication through shared memory or communication through message passing.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010399017631771" class="chatlog__message-container " data-message-id="779010399017631771">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:49 AM">07:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Shared memory communication (usually) requires a form of locking (<a class="inserted-after" href="https://en.wikipedia.org/wiki/Semaphore_(programming)" target="_blank">semaphores</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Lock_(computer_science)" target="_blank">mutexes</a>, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Monitor_(synchronization)" target="_blank">monitors</a>, etc) to coordinate the processes/threads.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010595693133885" class="chatlog__message-container " data-message-id="779010595693133885">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:49 AM">07:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Whilst message passing based communication does so by exchanging "messages" between the different processes/threads.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010745697435698" class="chatlog__message-container " data-message-id="779010745697435698">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:50 AM">07:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What is interesting is how these "messages" interact, whether its asynchronously or synchronously.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779010916959518750" class="chatlog__message-container " data-message-id="779010916959518750">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">let's say that message passing does not require <em>explicit</em> locking</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779010927189164053" class="chatlog__message-container " data-message-id="779010927189164053">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd argue that the serialization (copy) required to exchange "messages" is a form of locking where you prepay instead of pay-by-use</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779010958214561822" class="chatlog__message-container " data-message-id="779010958214561822">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it might still be implemented using locks under the hood</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779010979299983390" class="chatlog__message-container " data-message-id="779010979299983390">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:51 AM">07:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">especially synchronous message passing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779011055090663454" class="chatlog__message-container " data-message-id="779011055090663454">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span> I was about to say that the message-based models may still require "locks" of some sort, but they are not explicitly handled by the user.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779011147621597194" class="chatlog__message-container " data-message-id="779011147621597194">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:52 AM">07:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So the model difference is if the locking is implicit or explicit.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 07:52 AM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779011261202563094" class="chatlog__message-container " data-message-id="779011261202563094">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are similar mechanisms for shared data</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779011346058182757" class="chatlog__message-container " data-message-id="779011346058182757">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:52 AM">07:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I believe Java's <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">synchronized</span> might do such a thing, although I've never used it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779011435526619137" class="chatlog__message-container " data-message-id="779011435526619137">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you could just mark any object as "must-be-locked"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779011522499575849" class="chatlog__message-container " data-message-id="779011522499575849">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:53 AM">07:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but shared data synchronization tends to needs locking hierarchies, which are pretty complex. I believe</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779011568456695808" class="chatlog__message-container " data-message-id="779011568456695808">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">while message passing is always an interaction with a single mailbox - that's simple</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-779011361953808435" class="chatlog__message-container " data-message-id="779011361953808435">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And many of these mechanisms/patterns will arise in the different models too.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779011541194244116" class="chatlog__message-container " data-message-id="779011541194244116">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A good example of this would be having "a queue + a monitor", the monitor is used to synchronize the queue. In certain models, this has a special name depending on it handled.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779011693107740703" class="chatlog__message-container " data-message-id="779011693107740703">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 07:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Two common family of models are:
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Actor_model" target="_blank">Actor model</a>
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Process_calculus" target="_blank">Process Calculus</a> (includes CSP, CCS, pi-calculus)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779011782831898684" class="chatlog__message-container " data-message-id="779011782831898684">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:54 AM">07:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In a way, these two families can be seen as duals of one another</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012116732444702" class="chatlog__message-container " data-message-id="779012116732444702">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:56 AM">07:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The actor model works very well in object orientated languages because of the "object" nature of the "actors". They are opaque to each other actor.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012385116782593" class="chatlog__message-container " data-message-id="779012385116782593">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:57 AM">07:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When these "actors" send messages, it is completely asynchronous, which means that no blocking on the receiver end.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012621755613184" class="chatlog__message-container " data-message-id="779012621755613184">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So for the "actors", the "mailbox" (the thing holding the "messages", i.e. queue) might need to be potentially loads of messages, so it's a lot harder to reason about.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012723576930384" class="chatlog__message-container " data-message-id="779012723576930384">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Communicating_sequential_processes" target="_blank">CSP</a> (a form of Process Calculus, which Go uses a slightly variant of), is fully synchronous in nature.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012830627889162" class="chatlog__message-container " data-message-id="779012830627889162">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The message is flipped from being the unit of communication to the channel.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012893777330257" class="chatlog__message-container " data-message-id="779012893777330257">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:59 AM">07:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A channel is effectively a message queue with a monitor applied to it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779012985301499914" class="chatlog__message-container " data-message-id="779012985301499914">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 07:59 AM">07:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The channel is the thing that referenced to, where messages can be sent to it or received from.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779013130021896242" class="chatlog__message-container " data-message-id="779013130021896242">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:00 AM">08:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Most channels will block, and thus synchronous, until a channel receiver reads.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779013218982166558" class="chatlog__message-container " data-message-id="779013218982166558">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:00 AM">08:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This has advantages of that the blocking mechanism is that the channel only needs to "hold" one message.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779013396682113025" class="chatlog__message-container " data-message-id="779013396682113025">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:01 AM">08:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Go extends this to allow for buffered channels (of fixed capacity), so that you can have stuff similar to the Actor more, but the <em>channel</em> is the focus, rather than the sender/receiver (i.e. the actor).</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014210830598244" class="chatlog__message-container " data-message-id="779014210830598244">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:04 AM">08:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So the in Process-Calculus family of models, the processes communicate (and synchronize) through <em>channels</em>, whilst the Actors are themselves the processes.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014394666680340" class="chatlog__message-container " data-message-id="779014394666680340">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:05 AM">08:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One interesting thing is that the actor model does have the advantage of being "modelable" across multiple machines e.g. each machine an actor which then communicates over a network.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014486845685760" class="chatlog__message-container " data-message-id="779014486845685760">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:05 AM">08:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So because the models are effectively duals of each other, they can be applied at different levels for different problems.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014681879773194" class="chatlog__message-container " data-message-id="779014681879773194">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:06 AM">08:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But because these are generalized models, they will not be good for all problems (obviously).</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014790894845992" class="chatlog__message-container " data-message-id="779014790894845992">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:06 AM">08:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But one thing which seems to be a given across all forms of concurrency is the concept of a <em>queue</em>.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779014799676801075" class="chatlog__message-container " data-message-id="779014799676801075">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:06 AM">08:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">QUEUES EVERYWHERE!</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 08:06 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779015078321586209" class="chatlog__message-container " data-message-id="779015078321586209">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:07 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, concurrency through shared memory may disagree</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779015292516827136" class="chatlog__message-container " data-message-id="779015292516827136">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What do you mean?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779015497466773546" class="chatlog__message-container " data-message-id="779015497466773546">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:09 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean, you can do concurrency through memory without using queues</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779015803550040075" class="chatlog__message-container " data-message-id="779015803550040075">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Of course, but many basic concurrency things will have a queue-like thing to them.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779016120011194390" class="chatlog__message-container " data-message-id="779016120011194390">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, yes, just was pointing out that "all forms of concurrency" is just an expression</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779016262772064287" class="chatlog__message-container " data-message-id="779016262772064287">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:12 AM">08:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but I do think there is a merit in ditching queues to improve overall efficiency, even if it makes everything much harder to reason about</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779016268606472262" class="chatlog__message-container " data-message-id="779016268606472262">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But if you look at non-computing realms, e.g. humans, the queue is the way to organize things.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779016456171946055" class="chatlog__message-container " data-message-id="779016456171946055">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:13 AM">08:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="NWDD#1337">@NWDD</span> And that's the cost that is to made. The cost between pure performance and the ability to reason about the problem.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779016616678653993" class="chatlog__message-container " data-message-id="779016616678653993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">maybe some models will come in the future to help mitigate this?</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 08:14 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779016726523936799" class="chatlog__message-container " data-message-id="779016726523936799">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd assumed that queues don't need to be slow. In fact they can achieve speed-up because they reduce synchronization costs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779016804923605003" class="chatlog__message-container " data-message-id="779016804923605003">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:14 AM">08:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">also, messages don't necessarily imply a lot of copying. You can just enqueue pointers</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779016846140637214" class="chatlog__message-container " data-message-id="779016846140637214">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's basically ownership transfer</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-779016840315404298" class="chatlog__message-container " data-message-id="779016840315404298">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Queues are just a way of organization, and there is not inherently slow about them.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779017067646156800" class="chatlog__message-container " data-message-id="779017067646156800">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Random distribution into different queues might not be the best choice compared to selective distribution.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779017156418600990" class="chatlog__message-container " data-message-id="779017156418600990">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:16 AM">08:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. if each message contains information about how much work it is, the scheduler can help decide where to place it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779017206582607882" class="chatlog__message-container " data-message-id="779017206582607882">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:16 AM">08:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And that's the next aspect to add onto the queue idea, a scheduler.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779017226040508437" class="chatlog__message-container " data-message-id="779017226040508437">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think we really need to distinguish access to global concurrently mutated data structures (databases) from cooperating computation</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 08:17 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779017377542176819" class="chatlog__message-container " data-message-id="779017377542176819">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:16 AM">08:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the former might tend to gnarly explicit synchronization, and RCU type data structures</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779017449877667870" class="chatlog__message-container " data-message-id="779017449877667870">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:17 AM">08:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the latter tends to be easily coordinated using queues</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779017778375426069" class="chatlog__message-container " data-message-id="779017778375426069">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">1 requester to 1 source == trivial
M requesters to 1 source == shared memory
1 requester to N sources == message
M requesters to N sources == hybrid</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018073087934486" class="chatlog__message-container " data-message-id="779018073087934486">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't understand tbh</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018098467930142" class="chatlog__message-container " data-message-id="779018098467930142">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i think that's right</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018106189905940" class="chatlog__message-container " data-message-id="779018106189905940">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what would be an example of M to N</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018158275166238" class="chatlog__message-container " data-message-id="779018158275166238">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the linux kernel has a recent example to that with asynchronous IO via</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779018176985301013" class="chatlog__message-container " data-message-id="779018176985301013">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:20 AM">08:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Io_uring" target="_blank">io_uring</a>? (I think it was called something like that)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 08:20 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018225270652960" class="chatlog__message-container " data-message-id="779018225270652960">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">io_uring is just a queue</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779018378005184552" class="chatlog__message-container " data-message-id="779018378005184552">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes and no, it's "a queue with pointers"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779018402521284608" class="chatlog__message-container " data-message-id="779018402521284608">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:21 AM">08:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so it's kind of hybrid</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779018643140247563" class="chatlog__message-container " data-message-id="779018643140247563">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:21 AM">08:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you have this global data structure which is shared between user and kernel</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779018711280648242" class="chatlog__message-container " data-message-id="779018711280648242">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:22 AM">08:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's by writing on it that you communicate and request to avoid having to pay for the switch</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779018804440727552" class="chatlog__message-container " data-message-id="779018804440727552">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:22 AM">08:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so while it's true that it uses a queue to synchronize it also uses a shared memory location</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779019086059143209" class="chatlog__message-container " data-message-id="779019086059143209">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">right, in the end everything is a shared memory location</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779019114298474577" class="chatlog__message-container " data-message-id="779019114298474577">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:23 AM">08:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">queues are only an abstraction</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779019302660866068" class="chatlog__message-container " data-message-id="779019302660866068">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:24 AM">08:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">queues provide serialization of concurrent requests / responses</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779019354728955904" class="chatlog__message-container " data-message-id="779019354728955904">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There is a reason I brought up the "models". Some models are more useful than others in different situations</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779019720518271018" class="chatlog__message-container " data-message-id="779019720518271018">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">with M to N, did you allude to e.g. N threads accessing a shared memory search tree of M nodes that can be concurrently modified?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779019941486919691" class="chatlog__message-container " data-message-id="779019941486919691">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I was meaning:
M threads (requesters/accessors) accessing N sources of shared memory</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779020023570104341" class="chatlog__message-container " data-message-id="779020023570104341">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so what's a source of memory here?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779020165710086154" class="chatlog__message-container " data-message-id="779020165710086154">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:28 AM">08:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what is the access?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779020732687581224" class="chatlog__message-container " data-message-id="779020732687581224">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:30 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(I am being very vague on purpose)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779021913972277270" class="chatlog__message-container " data-message-id="779021913972277270">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My point above was probably that there is a tradeoff - we can replace explicit synchronization on shared memory by mediating accesses through a data-structure-managing actor (process)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779021958200950846" class="chatlog__message-container " data-message-id="779021958200950846">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:35 AM">08:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">at the cost of more strict serialization</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779022111078481930" class="chatlog__message-container " data-message-id="779022111078481930">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is what I understood:
1 requester to 1 source == trivial -&gt; (straight-forward single-thread code)
M requesters to 1 source == shared memory -&gt; (for example: multiple threads accessing a hash-table)
1 requester to N sources == message -&gt; (for example: a thread that receives network packets from multiple sockets and puts information in a hashtable)
M requesters to N sources == hybrid -&gt; (for example: multiple threads that receive network packets from multiple sockets and put information in a hashtable)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779023291439382538" class="chatlog__message-container " data-message-id="779023291439382538">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yep!</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779023322646052880" class="chatlog__message-container " data-message-id="779023322646052880">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:40 AM">08:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Perfect examples.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779023324277637169" class="chatlog__message-container " data-message-id="779023324277637169">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">hmmm</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779023374176223252" class="chatlog__message-container " data-message-id="779023374176223252">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:40 AM">08:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What I'm missing is for example, how are those N sources related?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779023431731642379" class="chatlog__message-container " data-message-id="779023431731642379">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:40 AM">08:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If there are no consistency constraints for the N things, the problem isn't any harder</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779023479596253254" class="chatlog__message-container " data-message-id="779023479596253254">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well, the last one is technically M-&gt;N-&gt;1</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779023905733607444" class="chatlog__message-container " data-message-id="779023905733607444">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, couldn't think of a practical example without adding -&gt;1 <img loading="lazy" class="chatlog__emoji " alt="😦" title="frowning" src="files\twemoji_1f626.svg"> (in the last example I was thinking about a matchmaking server)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779024146180079646" class="chatlog__message-container " data-message-id="779024146180079646">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 08:43 AM">08:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">If there are no consistency constraints for the N things, the problem isn't any harder
</div></div>in the M-&gt;N-&gt;1 example I was thinking of, the reason why M-&gt;N is different from 1-&gt;N is because 1-&gt;N couldn't provide enough throughput</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779024388711645194" class="chatlog__message-container " data-message-id="779024388711645194">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:44 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The simple example of M-&gt;N would this:
Each (M) thread receives a network packet, does some work on it, and then passes to another server (N)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779038363650883594" class="chatlog__message-container " data-message-id="779038363650883594">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 09:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What's the worst concurrency bug you've all encountered?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779038666328506428" class="chatlog__message-container " data-message-id="779038666328506428">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 09:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Locked up everything on all threads, because I was recursively sending and receiving messages (semaphore) from the same thing.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779038752080134144" class="chatlog__message-container " data-message-id="779038752080134144">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 09:41 AM">09:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. all threads were blocked and stuck in an infinite loop at the same time, effectively.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779039371311579137" class="chatlog__message-container " data-message-id="779039371311579137">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 09:44 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I ask because I know that there's tons of bug potential once you start doing things concurrently. I had a good time a while ago going through this thing: <a href="https://deadlockempire.github.io/" target="_blank">https://deadlockempire.github.io/</a></span>
</div>
<div class="chatlog__embed">
<div class="chatlog__embed-color-pill chatlog__embed-color-pill--default"></div>
<div class="chatlog__embed-content-container">
<div class="chatlog__embed-content">
<div class="chatlog__embed-text">
<div class="chatlog__embed-title">
<a class="chatlog__embed-title-link" href="https://deadlockempire.github.io/">
<div class="chatlog__markdown chatlog__markdown-preserve">The Deadlock Empire</div>
</a>
</div>
<div class="chatlog__embed-description">
<div class="chatlog__markdown chatlog__markdown-preserve">Slay dragons, learn
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.</div>
</div>
</div>
<div class="chatlog__embed-thumbnail-container">
<a class="chatlog__embed-thumbnail-link" href="files/logo-large-881B2.png">
<img class="chatlog__embed-thumbnail" src="files/logo-large-881B2.png" alt="Thumbnail" loading="lazy">
</a>
</div>
</div>
</div>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779039743526699078" class="chatlog__message-container " data-message-id="779039743526699078">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 09:45 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Here's a question, is there actually ever a need for a semaphore instead of a condition variable?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779039792834150411" class="chatlog__message-container " data-message-id="779039792834150411">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 09:46 AM">09:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(I know they are not equivalent)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779040656001597521" class="chatlog__message-container " data-message-id="779040656001597521">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 09:49 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For the audience (me), could you define the difference?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779043728353918976" class="chatlog__message-container " data-message-id="779043728353918976">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">What's the worst concurrency bug you've all encountered?
</div></div>A race condition that happened in a non-parallel situation of a so-called "safe" programming language (C#) in a game that was more or less ECS-based, where a system removed the "rigidbody" component in a very specific (user-triggered) situation.
There was a separate system which worked like a finite-state-machine that was being updated every few frames.
If during a transition between two states the rigidbody got removed, the thread that was running the logic crashed and the C# runtime for the target platform would silently swallow the exception freezing the game (without providing any crash-dump or useful information)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 10:02 AM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="grimacing">
<img class="chatlog__emoji chatlog__emoji--small" alt="😬" src="files/1f62c-084DC.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779046466961408000" class="chatlog__message-container " data-message-id="779046466961408000">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">Here's a question, is there actually ever a need for a semaphore instead of a condition variable?
</div></div>Have been thinking for a while, but I don't think I've ever felt the need or seen an advantage to using a semaphore</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779046741651095562" class="chatlog__message-container " data-message-id="779046741651095562">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 10:13 AM">10:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I do recall at some point using them because it was provided in a library example?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779049614216265769" class="chatlog__message-container " data-message-id="779049614216265769">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So what makes semaphores a poor choice?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779049992815640596" class="chatlog__message-container " data-message-id="779049992815640596">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because the most recommended scenario for a semaphore is a pool of resources</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779050102378594334" class="chatlog__message-container " data-message-id="779050102378594334">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 10:26 AM">10:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">however when you have a pool of resources then also want a handle to the specific resource you got</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779050188488441887" class="chatlog__message-container " data-message-id="779050188488441887">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 10:27 AM">10:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which need an additional thread-safe way to handle it</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779050312429600769" class="chatlog__message-container " data-message-id="779050312429600769">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 10:27 AM">10:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that thing to dole out the resource handles can handle blocking the thread just as well as the semaphore</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779050764152209418" class="chatlog__message-container " data-message-id="779050764152209418">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:29 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can see them being useful for example to request a system to run once (for example run a physics update)?
But because more often than not you need to know when it has finished and wait for it, there are other options?
Plus it feels like semaphores aren't really well known which means that it may confuse other people working in the project
In the end I feel that because we're used to do so it's easier to reason about critical regions of code that should not execute at the same time and other options are just not as popular?</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 10:29 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779050978624143411" class="chatlog__message-container " data-message-id="779050978624143411">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:30 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they are still taught as a synchronization primitive though</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779051334799851540" class="chatlog__message-container " data-message-id="779051334799851540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 10:31 AM">10:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and for the record:
semaphore is a counter where if you try an decrement below 0 it blocks until another thread increments it above 0
a condition variable is an object that lets you wait on a signal from the thread while temporarily releasing a mutex</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779051559220674631" class="chatlog__message-container " data-message-id="779051559220674631">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:32 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, people are taught about synchronization in general but I don't think that knowledge persists in time after tests</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779056989267165226" class="chatlog__message-container " data-message-id="779056989267165226">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For those who have worked with parallel programming a fair amount, doing parallel programming properly such that close-to-optimal code is produced given any parallel problem seems extremely difficult to master, and extremely difficult to do in general. How much of this do you attribute to tools? Are there tools you wish you had when learning---or doing---this kind of programming?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779057018572767272" class="chatlog__message-container " data-message-id="779057018572767272">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 10:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">What's the worst concurrency bug you've all encountered?
</div></div><span class="chatlog__markdown-mention" title="bvisness#0001">@bvisness</span> I've run into a weird situation that involved some sort of <a class="inserted-after" href="https://en.wikipedia.org/wiki/False_sharing" target="_blank">false sharing</a>. I had a writer queue that would normally transfer around 20MB / sec, but in that situation the throughput dropped to about 400KB / sec</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779066982120816731" class="chatlog__message-container " data-message-id="779066982120816731">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:34 AM">11:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">forgot to mention explicitly that the bottleneck (400KB/s) here was a <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">memcpy()</span> ;-). When the original 20MB/s was simply the hardware source</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779058778686488596" class="chatlog__message-container " data-message-id="779058778686488596">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:01 AM">11:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> I'm not sure I'm attributing anything on tools. What we've missed out on in the discussion so far is focussing more on what actually happens in the hardware, HM style.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 11:07 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779059015527039027" class="chatlog__message-container " data-message-id="779059015527039027">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In the end we're on highly parallel machines and if there weren't possible benefits, much of the parallelism wouldn't exist</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 11:02 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-779058925185007626" class="chatlog__message-container " data-message-id="779058925185007626">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">adding onto <span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> 's question, are there any resources you'd recommend for getting into parallel programming?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779059834162774037" class="chatlog__message-container " data-message-id="779059834162774037">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/09acda34c7fe070450d6568ebcc13a2d-94D34.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="NWDD#1337" data-user-id="157618685496786945">NWDD</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:05 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I like the parallel stacks feature of visual studio, but It's not life-changing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779061571116466176" class="chatlog__message-container " data-message-id="779061571116466176">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="Wayward#3376">@Wayward</span> I was recommended "<a class="inserted-after" href="https://www.amazon.com/Performance-Modeling-Design-Computer-Systems/dp/1107027500" target="_blank">Performance Modeling and Design of Computer Systems - Queueing Theory in Action</a>". My company has ordered it, haven't got to see it yet.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779061642620305448" class="chatlog__message-container " data-message-id="779061642620305448">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:12 AM">11:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It for sure is important to understand the basics, like Caches, <a class="inserted-after" href="https://en.wikipedia.org/wiki/MESI_protocol" target="_blank">MESI</a>, and synchronization primitives</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779062020380426280" class="chatlog__message-container " data-message-id="779062020380426280">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:14 AM">11:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the Linux kernel goes quite fancy with synchronization on shared data structures, so maybe that is a recommend. Though on the other hand, this approach is error-prone, not beautiful from an architectural perspective.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779062476020383754" class="chatlog__message-container " data-message-id="779062476020383754">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:16 AM">11:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm sure that static analyzers, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Fuzzing" target="_blank">fuzzers</a>, and similar tools can help a lot with debugging shared data structures. So that would be an answer to Ryan's question. I can't say anything about the quality of the existing tools, not really having used any</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779062713116393492" class="chatlog__message-container " data-message-id="779062713116393492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:17 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I feel like I ought to have some tools to recommend, but the truth is that I don't really. usually the challenge when doing something fancy (i.e. more than the straightforward spinlock/mutex) is getting things to work correctly at all, and then the best thing you can do is to stress-test on as many CPUs as you can. so in a way maybe a machine with lots of CPUs is the best way to find bugs..?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779063105225359392" class="chatlog__message-container " data-message-id="779063105225359392">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I found this a nice and accessible document about architectural aspects, although it's from Chris Lattner and geared towards high-level languages (Swift in this case) <a href="https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9f782" target="_blank">https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9f782</a></span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 11:21 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779063256677351444" class="chatlog__message-container " data-message-id="779063256677351444">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:19 AM">11:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">With my relatively humble stuff, I found it surprising how quickly some of my concurrency bugs were found by simple stress testing <span class="chatlog__markdown-mention" title="Vegard#4618">@Vegard</span></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779063515561459734" class="chatlog__message-container " data-message-id="779063515561459734">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:20 AM">11:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">though that is somewhat of a tautology, it doesn't take a lot of testing until you hit no bugs anymore (i.e. just fewer ;-])</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779064392057749525" class="chatlog__message-container " data-message-id="779064392057749525">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3cafa0f6213a14439547c0dd147bb092-9F723.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Vegard#4618" data-user-id="133348672976060416">Vegard</span>
<span class="chatlog__timestamp">Nov 19, 2020 11:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it can be really tough to hit some bugs, so I don't advocate testing as a way to validate your <em>design</em></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779064726407479307" class="chatlog__message-container " data-message-id="779064726407479307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 11:25 AM">11:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for sanity checking or bug finding it's okay</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779101520838524928" class="chatlog__message-container " data-message-id="779101520838524928">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/71ecf1f788f1530928078a8fd18a3111-341F5.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Wayward#3376" data-user-id="366605940524580867">Wayward</span>
<span class="chatlog__timestamp">Nov 19, 2020 01:51 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> on a sidenote, both the current topic and the next few could really use some resource recommendations listed on the handmade network resource page afterwards</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779103192729780224" class="chatlog__message-container " data-message-id="779103192729780224">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 01:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm back, female canines!</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="rolling_eyes">
<img class="chatlog__emoji chatlog__emoji--small" alt="🙄" src="files/1f644-7AFD4.svg" loading="lazy">
<span class="chatlog__reaction-count">3</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779103526927990795" class="chatlog__message-container " data-message-id="779103526927990795">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 01:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so what <img loading="lazy" class="chatlog__emoji " alt="🌶" title="🌶" src="files\twemoji_1f336.svg"> stuff do you have for us</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779103700781629440" class="chatlog__message-container " data-message-id="779103700781629440">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 01:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The Actor Model is only popular because because it's the OOP of concurrency models and fits very with in OOP languages.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779104852353482794" class="chatlog__message-container " data-message-id="779104852353482794">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Interesting. Didn't you say earlier that it was possibly a good fit for networked applications?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779104921869353024" class="chatlog__message-container " data-message-id="779104921869353024">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:04 PM">14:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean I guess that wouldn't be related to popularity, per se</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779104971747622912" class="chatlog__message-container " data-message-id="779104971747622912">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I didn't say good, I said it scaled easily to networked applications.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779105047320461332" class="chatlog__message-container " data-message-id="779105047320461332">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:05 PM">14:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Because each machine is treated as its own actor in the network/graph</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779105225029451786" class="chatlog__message-container " data-message-id="779105225029451786">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Would you say that CSP is basically the actor model too, or are there some differences?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779105394685378581" class="chatlog__message-container " data-message-id="779105394685378581">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">CSP is the anti-actor model.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779105593629605908" class="chatlog__message-container " data-message-id="779105593629605908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ok that's surprising to me, because both models have separate stateful "processes" that communicate with each other, don't they?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779106411451121694" class="chatlog__message-container " data-message-id="779106411451121694">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Think about the focus of each model</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779107589396365342" class="chatlog__message-container " data-message-id="779107589396365342">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure I see the distinction you're going for. Are you saying the important part of CSP is the communication, and the important part of the actor model is the actors (e.g. processes)?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779107624754479134" class="chatlog__message-container " data-message-id="779107624754479134">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:15 PM">14:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or is my "e.g. processes" the issue here</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779108372096090182" class="chatlog__message-container " data-message-id="779108372096090182">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not really getting the distinction either. Also not all of CSP is channel focused or communication focused. If I recall the first half of the book doesn't even mention channels. I recall CSP more as an algebra over sequences of events</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779108575313395743" class="chatlog__message-container " data-message-id="779108575313395743">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:19 PM">14:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but for the channel part, not sure what is that relevant or insightful. Would very much like to know</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779108917904015380" class="chatlog__message-container " data-message-id="779108917904015380">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:20 PM">14:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I gather that CSP channels are understood as sending messages synchronously (i.e. the sender waits until recipient "dequeues" it), as opposed to asynchronous sending with Actor model, but I'm also not sure that this is super relevant, nor would I actually <em>want</em> to waste the time waiting</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779109323090690109" class="chatlog__message-container " data-message-id="779109323090690109">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well I'm also not sure that the actor model specifies synchronous vs. asynchronous communication?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779109616516464650" class="chatlog__message-container " data-message-id="779109616516464650">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are in any case, different variants of all the theories - for example I believe CSP started out as a static graph of processes connected by channels, but it might be that this constraint was lifted in later publications (don't quote me, I haven't really checked back)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779109788525133905" class="chatlog__message-container " data-message-id="779109788525133905">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:24 PM">14:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I know that actor model is definitely always understood as sending completely asynchronously <span class="chatlog__markdown-mention" title="bvisness#0001">@bvisness</span> . At least in these days</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779110127507996692" class="chatlog__message-container " data-message-id="779110127507996692">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:25 PM">14:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but if I'm thinking of modelling my program after the actor model, I'll probably consider allocating messages statically in the <em>sender</em>, so allocation isn't a performance bottleneck, and the number of existing messages is naturally bounded</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779110354282086421" class="chatlog__message-container " data-message-id="779110354282086421">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:26 PM">14:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that would also mean each sender has to wait until it gets some of its messages returned back before it can send more, which would again lead to some form of "blocking". Not really while sending but still</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779111284918190101" class="chatlog__message-container " data-message-id="779111284918190101">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:30 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that makes sense, and would lead to a model like I'm used to from Go</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779111610781663243" class="chatlog__message-container " data-message-id="779111610781663243">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:31 PM">14:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(what you describe is basically the behavior of a buffered channel)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779111992573165589" class="chatlog__message-container " data-message-id="779111992573165589">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:32 PM">14:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I actually very rarely see any of Go's concurrency features used heavily outside the standard library, and I'm not sure why. They certainly feel well-integrated into the language, but nobody seems to use them.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779112077276479540" class="chatlog__message-container " data-message-id="779112077276479540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:33 PM">14:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Maybe it's just laziness or people not knowing how to use them.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779112184508448769" class="chatlog__message-container " data-message-id="779112184508448769">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:33 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">more column b than column a IMO</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779112269224476702" class="chatlog__message-container " data-message-id="779112269224476702">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:34 PM">14:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">then again go is targeted to backend webdev</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779112561723310130" class="chatlog__message-container " data-message-id="779112561723310130">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I certainly do agree that the actor model / CSP is a good conceptual fit for an object-oriented language (I continue to think they are essentially the same)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779112880024190996" class="chatlog__message-container " data-message-id="779112880024190996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:36 PM">14:36</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess I'm curious, though, if it's an essentially object-oriented concept. Concurrent execution seems to me to imply that you have concurrent "processes", which will certainly have their own state. Whether that's an "object" vs. a coroutine, goroutine, thread, etc. seems unrelated.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779113205741256714" class="chatlog__message-container " data-message-id="779113205741256714">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:37 PM">14:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">After all, you can apply actor model or CSP designs inside a program, or across network boundaries, and the concepts feel the same to me</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779113933982138408" class="chatlog__message-container " data-message-id="779113933982138408">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you extend CSP to allow for infinite capacity channels, then they are dualistic models.
Both are modelling interactions of a graph mesaages.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779113998218035200" class="chatlog__message-container " data-message-id="779113998218035200">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:40 PM">14:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Actors = Nodes/Vertices
Channels = Edges</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779114420067500064" class="chatlog__message-container " data-message-id="779114420067500064">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So does the actor model not say anything about synchronization? I wasn't under the impression that e.g. a smalltalk system would make the communication between two objects asynchronous.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779114456679448578" class="chatlog__message-container " data-message-id="779114456679448578">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But as soon as make the channels fixed capacity, it becomes synchronized (to a limit)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779114494651662376" class="chatlog__message-container " data-message-id="779114494651662376">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:42 PM">14:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The actor model is pure asynchronous</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779115431985938463" class="chatlog__message-container " data-message-id="779115431985938463">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:46 PM">14:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So that's why I said they were dual models.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779115522738487326" class="chatlog__message-container " data-message-id="779115522738487326">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:46 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'll say that one should strive the number of messages in flight bounded in <em>any</em> program</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779115614181654559" class="chatlog__message-container " data-message-id="779115614181654559">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:47 PM">14:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Not sure that it's particularly relevant if it's the channel that caps the number of messages, or if it's the senders</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 02:48 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779115630472462336" class="chatlog__message-container " data-message-id="779115630472462336">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Another fun fact, CSP is effectively <a class="inserted-after" href="https://en.wikipedia.org/wiki/Pipeline_(Unix)" target="_blank">UNIX Pipes</a> applied to the program level</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779117263555002390" class="chatlog__message-container " data-message-id="779117263555002390">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Pasting some messages from <span class="chatlog__markdown-mention">#fishbowl-audience</span> about the differences between CSP and the actor model...</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779117412641013781" class="chatlog__message-container " data-message-id="779117412641013781">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:54 PM">14:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Some definitions from the internet:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">An actor is a computational entity that, in response to a message it receives, can concurrently:
send a finite number of messages to other actors;
create a finite number of new actors;
designate the behavior to be used for the next message it receives.
Recipients of messages are identified by address, sometimes called "mailing address". Thus an actor can only communicate with actors whose addresses it has. It can obtain those from a message it receives, or if the address is for an actor it has itself created.
</div></div>
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">The actor model is characterized by inherent concurrency of computation within and among actors, dynamic creation of actors, inclusion of actor addresses in messages, and interaction only through direct asynchronous message passing with no restriction on message arrival order.</div></div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779117453867352095" class="chatlog__message-container " data-message-id="779117453867352095">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:54 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> that is true for TCP as well, or for file I/O, or for... any communication with flow control really</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779117695802540062" class="chatlog__message-container " data-message-id="779117695802540062">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean specific pipes because of the ability to <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">select</span></span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779117945157582868" class="chatlog__message-container " data-message-id="779117945157582868">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:56 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">I mean specific pipes because of the ability to <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">select</span>
</div></div>select is just demultiplexing</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779118061843251230" class="chatlog__message-container " data-message-id="779118061843251230">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:57 PM">14:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you have a number of possible inputs (from concurrent connected actors) and want to be able to the next one that signals anything</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779118517583740928" class="chatlog__message-container " data-message-id="779118517583740928">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-pre chatlog__markdown-pre--inline">select</span> is needed as a system call because the OS encapsulates I/O</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779118590241538058" class="chatlog__message-container " data-message-id="779118590241538058">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:59 PM">14:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but in general, demultiplexing is implemented using synchronization primitives</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779118602649337877" class="chatlog__message-container " data-message-id="779118602649337877">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:59 PM">14:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">like condition variables</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779118667169267712" class="chatlog__message-container " data-message-id="779118667169267712">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:59 PM">14:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">or in hardware, using interrupts or regular polling</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779118841736986654" class="chatlog__message-container " data-message-id="779118841736986654">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I know it's demultiplexing, but I meant that CSP was effectively the formalization of UNIX's pipes.</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 03:00 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-779118924213387264" class="chatlog__message-container " data-message-id="779118924213387264">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">hmm, ok</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-779117663103746106" class="chatlog__message-container " data-message-id="779117663103746106">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">jfs's question:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">But what is the essential difference between sending a message "via a channel" or "to an address"?
</div></div>My overall take
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">I guess it's true that in a CSP system you don't directly reference the other actors. But I'm still not convinced that meaningfully changes the model
you could conceive of channels as "actors" that hand messages back and forth, and now you've achieved basically the same thing?
it doesn't feel to me like a fundamental difference</div></div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779117762110291969" class="chatlog__message-container " data-message-id="779117762110291969">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and bill:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">There's a real I keep saying dual models.
They are effectively opposites for measuring graphs of messages</div></div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779117783316692992" class="chatlog__message-container " data-message-id="779117783316692992">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 02:55 PM">14:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">k continue <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779118094185922590" class="chatlog__message-container " data-message-id="779118094185922590">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> are you saying the difference is that in CSP you control the edges, while in the actor model you control the vertices? Or something like that?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779118134124740658" class="chatlog__message-container " data-message-id="779118134124740658">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779118169787990016" class="chatlog__message-container " data-message-id="779118169787990016">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 02:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ok, I see what you mean by "dual" then</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779119029298266112" class="chatlog__message-container " data-message-id="779119029298266112">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess I still don't think they are all that different in practice, since channels feel in that context like extra restrictions on actor communication.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779119285317926953" class="chatlog__message-container " data-message-id="779119285317926953">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My idea is that in most realistic programs you would just use a mixture of both, as you see fit</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779119427026550804" class="chatlog__message-container " data-message-id="779119427026550804">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 03:02 PM">15:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it only is a meaningful difference if you imagine actors being real physical threads (or at least OS threads)</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 03:03 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779119506693947462" class="chatlog__message-container " data-message-id="779119506693947462">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and channels really being a certain standard implementation with a fixed comm interface</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 03:04 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779119609403539508" class="chatlog__message-container " data-message-id="779119609403539508">
</div>
<div id="chatlog__message-container-779120183661953075" class="chatlog__message-container " data-message-id="779120183661953075">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 03:05 PM">15:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I also happen to think that it is extremely important to use standard interfaces for concurrently modelled programs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779120408804458496" class="chatlog__message-container " data-message-id="779120408804458496">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 03:06 PM">15:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">from my experience setting up all these graphs and actors and channels and what not, and then using the comm ifaces right, is extremely painful, so one wants to maintain and use as few primitives as possible</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 03:06 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779122205161816106" class="chatlog__message-container " data-message-id="779122205161816106">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So where are actor models used in practice for concurrency? (Like, what languages or tools are used for this)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779122244235821087" class="chatlog__message-container " data-message-id="779122244235821087">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 03:13 PM">15:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">apparently Go is not an example, by <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> 's definition <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-779122284076990505" class="chatlog__message-container " data-message-id="779122284076990505">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="19-Nov-20 03:13 PM">15:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm just not very aware of what's in the space</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779125023277056090" class="chatlog__message-container " data-message-id="779125023277056090">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Nov 19, 2020 03:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Maybe we should just wrap it up anyway. Last call for questions?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779140398089764865" class="chatlog__message-container " data-message-id="779140398089764865">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">honestly it just sounds like nit picking to distinguish between them, you can turn the actor model into CSP by making a bunch of channel actors who forward messages to everyone who subscribed</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779144338277793822" class="chatlog__message-container " data-message-id="779144338277793822">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Nov 19, 2020 04:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Scala's <a class="inserted-after" href="https://en.wikipedia.org/wiki/Akka_(toolkit)" target="_blank">Akka</a> is the most famous actor implementation that I'm aware of. <a class="inserted-after" href="https://en.wikipedia.org/wiki/Erlang_(programming_language)" target="_blank">Erlang</a> is a popular and successful language that implements the actor model. Never really used any of these</span>
<span class="chatlog__edited-timestamp" title="19-Nov-20 04:59 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-779199878315376671" class="chatlog__message-container " data-message-id="779199878315376671">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Nov 19, 2020 08:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Alright closing this off now. Thanks everyone for participating!</span>
</div>
</div>
</div>
</div>
</div>
</div>