c# - 并行性,几千个线程

标签 c# multithreading parallel-processing

我们有一个网络应用程序可以监控多个社交媒体,例如 twitter/facebook。我们从这些社交媒体收到的数据被保存到数据库中。数据很大,因此我考虑使用 Task 将数据保存到数据库中。

但我对它的工作原理有些担忧。在文档中找不到如果我为 1 个用户启动 10 个线程乘以 2000 个用户会发生什么情况?或者可能有 10.000 个用户。

Task 究竟会做什么?这些线程是否有某种队列?

任何关于此事的线索都将不胜感激。谢谢!

最佳答案

Task 只是一个可以调度到 TaskScheduler 队列的委托(delegate)的包装器。 Task 不创建任何线程。当您在内部调用 task.Start() 时,它会调用 taskScheduler.QueueTask(Task) 方法。

默认情况下,所有任务都使用 TaskScheduler.Default,它在内部使用 ThreadPool。 您可以在创建 TaskFactory 时指定您的自定义任务调度程序 - 此类具有接受 TaskScheduler 参数的构造函数。当前调度程序始终可通过 TaskScheduler.Current 属性获得。

关于c# - 并行性,几千个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19241780/

相关文章:

swift - 如何告诉主线程 URLSessionDataTask 已经完成

java - 有没有好的线程安全格式缓存库?

java - 如何在后台运行进程并重定向jsp页面

r - 如何使用 foreach 在 Windows 上实现并行锯齿?

ruby - 如何使用带有特定标签的 parallel_tests

c# - 如何将 css 类添加到 html 通用控件 div?

c# - SQLite 不能很好地运行 c#

c - 了解通过 MPI_Isend 和 MPI_Irecv 传递缓冲区

c# - 如何在对象列表中递归搜索字符串项

c# - MVVM 交换控件