C# c语言中的多线程#
我不熟悉穿线。C# c语言中的多线程#,c#,asp.net,multithreading,hardware,cpu,C#,Asp.net,Multithreading,Hardware,Cpu,我不熟悉穿线。 我的老板给了我一个场景。我们有一个70gb的对象列表,我们想从数据库加载它。在这个场景中,我想利用cpu(多线程)需要时间。也就是说,对数据进行分区,加载第一部分,而不是第二部分,当加载第二部分时,意味着处理第一部分时,我应该做什么请指导我。我的经验是,数据检索总是需要更长的时间,而多线程只在CPU密集型任务中起作用 例如,我使用FOR XML一次从数据库检索5000个帐户及其所有相关人员信息,以便获得可以反序列化的关系数据。这大约需要一分钟,然后我运行复杂的分段,它在不到一秒钟
我的老板给了我一个场景。我们有一个70gb的对象列表,我们想从数据库加载它。在这个场景中,我想利用cpu(多线程)需要时间。也就是说,对数据进行分区,加载第一部分,而不是第二部分,当加载第二部分时,意味着处理第一部分时,我应该做什么请指导我。我的经验是,数据检索总是需要更长的时间,而多线程只在CPU密集型任务中起作用 例如,我使用FOR XML一次从数据库检索5000个帐户及其所有相关人员信息,以便获得可以反序列化的关系数据。这大约需要一分钟,然后我运行复杂的分段,它在不到一秒钟的时间内运行。在这种情况下,多线程将不会有什么不同 我的另一个场景是,我进行了数千次简单的DB调用,每次调用都会受到网络延迟的影响,而SQL server由于表很小且索引完整,所以搜索是即时的。在本例中,使用这些线程一次生成几个线程并多次调用数据库实际上更快。产卵8线程提供了大约四倍的增长
查看
System.Threading
命名空间。您是否可以控制如何将数据加载到数据库中,以及硬件的外观
要加载70GB的数据,首先需要进行I/O绑定。如果数据存在于单个卷中,尝试使用多个线程只会导致磁头在驱动器上来回搜索时发生抖动
这意味着您的第一步应该是最大限度地提高磁盘子系统的性能。您可以通过以下方式实现:
如果有帮助,我会在我的书中详细讨论这些基础设施问题:。现在的情况是,假设数据库中每10 mb有1 TB的对象。我有一个名为MATCH()的函数,它有一个查询对象,其返回类型是double,在这个函数中,我有数学计算。现在我检查结果的天气值是否介于0和1之间,然后我有double[]结果=新的double[eg 1000]。我该怎么做,因为系统有2 gb ram,我应该锁定哪个部分,或者使用互斥锁,或者使用线程池。请给我程序的体系结构。请告诉我可以同时运行多少个线程?backgroundworker controlol可以使用多少线程听起来您面临两个挑战:第一,快速读取数据库中的数据,第二,使用匹配函数处理数据。我没有足够的信息来详细回答你的问题;这是一个论坛帖子的大要求。简而言之,您将有一个或多个线程读取数据(取决于物理布局),一个或多个线程处理结果,并使用锁或信号灯来协调工作。祝你好运