Multi-threading libraries for .NET

后端 未结 10 1902
长发绾君心
长发绾君心 2021-02-14 08:39

I used multiple threads in a few programs, but still don\'t feel very comfortable about it.

What multi-threading libraries for C#/.NET are out there and which advantages

10条回答
  •  醉梦人生
    2021-02-14 09:27

    There are various reasons for using multiple threads in an application:

    • UI responsiveness
    • Concurrent operations
    • Parallel speedup

    The approach one should choose depends on what you're trying to do. For UI responsiveness, consider using BackgroundWorker, for example.

    For concurrent operations (e.g. a server: something that doesn't have to be parallel, but probably does need to be concurrent even on a single-core system), consider using the thread pool or, if the tasks are long-lived and you need a lot of them, consider using one thread per task.

    If you have a so-called embarrassingly parallel problem that can be easily divided up into small subproblems, consider using a pool of worker threads (as many threads as CPU cores) that pull tasks from a queue. The Microsoft Task Parallel Library (TPL) may help here. If the job can be easily expressed as a monadic stream computation (i.e. with a query in LINQ with work in transformations and aggregations etc.), Parallel LINQ (same link) which runs on top of TPL may help.

    There are other approaches, such as Actor-style parallelism as seen in Erlang, which are harder to implement efficiently in .NET because of the lack of a green threading model or means to implement same, such as CLR-supported continuations.

提交回复
热议问题