线程中的数据集读取问题 [英] DataSet Reading Problem in Thread

查看:64
本文介绍了线程中的数据集读取问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

具有批量XML命题,该记录具有10000个学生的记录(假设),如下所示:

< school>

<学生人数= 1>

< name>山姆</name>

< age> 14</age>

<父母>

<父亲>安德森</父亲>

< mother> Anah</mother>

</parents>

<标记>

< internal1>> 68>/eng< mat> 78</mat</internal1>

< internal2>> 67>/eng< mat> 89</mat</internal2>

</marks>

</学生>

....

....

<学生人数= 10000>

< name>约翰</name>

< age> 18</age>

<父母>

<父亲>亚伯拉罕</父亲>

< mother> Sana</mother>

</parents>

<标记>

< internal1>> 68>/eng< mat> 78</mat</internal1>

< internal2>> 67< eng> mat> 89</mat</internal2>

</marks>

</学生>

</school>

我将这些批量的10000个学生记录拆分为20个xml文件的500个学生记录.然后为20个xml文件创建20个线程.在每个线程中遍历xml中的值并构造包含以下表的数据集:

StudentName

StudentInternalMarks1

StudentInternalMarks2

StudentFatherName

StudentMotherName

StudentAge

要填充6个表中的值,我使用6个函数,如下所示:

ReadStudentName(dsStudentDetails);

ReadStudentInternalMarks1(dsStudentDetails);

ReadStudentInternalMarks2(dsStudentDetails);

ReadStudentFatherName(dsStudentDetails);

ReadStudentMotherName(dsStudentDetails);

ReadStudentAge(dsStudentDetails);

一次只能运行两个线程.如果任何一个线程结束意味着,剩余的线程和第3个线程将运行.数据集中的每个线程将包含500个学生记录.如果我以序列方式(一个接一个地)运行它,则所有10000名学生都在记录 将被加载.如果我在线程模式下运行它,则意味着在某些线程中某些值未加载. (即)缺少某些值.例如:在10000个中,只有9258个正在加载.

解决方案

这似乎与线程停止有关.例如.当最后两个正在运行并且一个完成时,另一个停止,并且结果被忽略.但是,由于您没有显示代码或逻辑,因此无法建议实际上是问题所在.


 have the Bulk XML Doument which has 10000 students record (assumption) as follows:

<school>

<student count=1>

<name>Sam</name>

<age>14</age>

<parents>

<father>Anderson</father>

<mother>Anah</mother>

</parents>

<marks>

<internal1><eng>68</eng><mat>78</mat></internal1>

<internal2><eng>67</eng><mat>89</mat></internal2>

</marks>

</student>

....

....

<student count=10000>

<name>John</name>

<age>18</age>

<parents>

<father>Abraham</father>

<mother>Sana</mother>

</parents>

<marks>

<internal1><eng>68</eng><mat>78</mat></internal1>

<internal2><eng>67</eng><mat>89</mat></internal2>

</marks>

</student>

</school>

i'm splitting these bulk 10000 students record into 500 students record of 20 xml files. then am creating 20 thread for 20 xml files. in each thread am traversing the values from xml and constructing dataset which contain 6 tables as folows:

StudentName

StudentInternalMarks1

StudentInternalMarks2

StudentFatherName

StudentMotherName

StudentAge

To fill the values in 6 tables i use 6 functions as follows:

ReadStudentName(dsStudentDetails);

ReadStudentInternalMarks1(dsStudentDetails);

ReadStudentInternalMarks2(dsStudentDetails);

ReadStudentFatherName(dsStudentDetails);

ReadStudentMotherName(dsStudentDetails);

ReadStudentAge(dsStudentDetails);

At a time only two thread will run. if any one of thread ends means, remaining thread and 3rd thread will run. Each thread in a dataset will contain 500 students record. if i run it as sequence means(one by one), all 10000 students record will be loaded. if i run it in thread mode means,in some thread some values are not loading. (i.e.,) some values are missing. for e.g.: among 10000 only 9258 are loading. this could be change every time.

解决方案

That looks like a problem with the stopping of threads. E.g. when last two are running and one completes the other is stopped and results ignored. However since you do not show the code or logic it's impossible to suggest what is in fact the problem.


这篇关于线程中的数据集读取问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆