Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.programming.threads > #5401

About Go scheduler and Go concurrency

Newsgroups comp.programming.threads
Date 2019-12-20 11:35 -0800
Message-ID <059f61ce-9025-4f3f-8eba-c9ea478fa103@googlegroups.com> (permalink)
Subject About Go scheduler and Go concurrency
From aminer68@gmail.com

Show all headers | View raw


Hello,


I have just looked at the following interesting video about Go scheduler and Go concurrency:

Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency

https://www.youtube.com/watch?v=-K11rY57K7k


And by looking at this video you will understand much more how Go scheduler works and how concurrency is implemented in Go, but you have 
to understand that the Go scheduler is using work-stealing, but 
if you have noticed in the following webpage about the Threadpool of microsoft .NET 4.0:

https://blogs.msdn.microsoft.com/jennifer/2009/06/26/work-stealing-in-net-4-0/


You will notice that when a task is recursively creating  other tasks, 
they are using the same work-stealing queue of the task that has started the other tasks, and i think that Go is using the same method, and you will notice that this method of doing gives more preference to the cache locality than scalability, because notice that if a task starts many 
tasks and there is less tasks in the other work stealing queues, 
so Go you will gain from cache locality but since the other threads 
will steal from this work-stealing queue, so there will be 
contention on the work-stealing queue, so scalability will suffer, 
so as you are noticing the Go and the Threadpool of Microsoft are  giving more preference to cache locality than scalability.

But in my following invention of a Threadpool that scales very well i am 
giving more preference to scalability than to cache locality:

https://sites.google.com/site/scalable68/an-efficient-threadpool-engine-with-priorities-that-scales-very-well

Other than that when you are doing IO with my Threadpool, you can 
use asychronous IO by starting a dedicated thread to IO to be more efficient, or you can start another of my Threadpool and use it for tasks that uses IO, you can use the same method when threads of the my Threadpool are waiting or sleeping..

Other than that for recursion and the stack overflow problem 
you can convert your function from a recursive to iterative 
to solve the problem of stack overflow.

Other than that to be able to serve a great number of internet connections or TCP/IP socket connections you can use my Threadpool 
with my powerful Object oriented Stackful coroutines library for Delphi and FreePascal here:

https://sites.google.com/site/scalable68/object-oriented-stackful-coroutines-library-for-delphi-and-freepascal



Thank you,
Amine Moulay Ramdane. 








 

Back to comp.programming.threads | Previous | Next | Find similar | Unroll thread


Thread

About Go scheduler and Go concurrency aminer68@gmail.com - 2019-12-20 11:35 -0800

csiph-web