Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #5401
| 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 |
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
About Go scheduler and Go concurrency aminer68@gmail.com - 2019-12-20 11:35 -0800
csiph-web