August 06, 2020 core.thread vs std.concurrency - which of them to use? | ||||
---|---|---|---|---|
| ||||
When to use core.thread and when std.concurrency for multithreading in applications? Is one of them a preferred way? |
August 06, 2020 Re: core.thread vs std.concurrency - which of them to use? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Victor L Porton | On Thursday, 6 August 2020 at 01:13:28 UTC, Victor L Porton wrote:
> When to use core.thread and when std.concurrency for multithreading in applications? Is one of them a preferred way?
Druntime's core.thread sets the foundation for D's multi-threading (or at least the non-betterC foundation). On top of it Phobos' std.concurrency and std.parallelism provide a higher-level abstractions.
Which ones you should use depends on your application:
* If you want to build a web application, event loop is the way to go -> look at libraries like vibe-d / vibe-core / event-code (these I've ordered from high-level to lowe-level).
* If you want to speed up a computation, then you're likely looking for data-parallelism -> look into std.parallelism and only if you need more control you can consider core.thread
* If you need concurrency, either logical (represent different "processes" like web requests, AI agents in a simulation, or say simply remembering different states of a graph iteration) or physical (using multiple cores to do things concurrently, but not necessarily based on data-parallelism) look into std.concurrency.
* If want to build a library (e.g. event loop, task system/future/promises/ reactive extensions, actor model, SCP, etc.) then you need to understand how things work under the hood and so I'd say that reading core.thread's source code would be valuable.
Cheers,
Petar
|
Copyright © 1999-2021 by the D Language Foundation