CN103677971B - 多线程处理系统及方法 - Google Patents

多线程处理系统及方法 Download PDF

Info

Publication number
CN103677971B
CN103677971B CN201210357027.7A CN201210357027A CN103677971B CN 103677971 B CN103677971 B CN 103677971B CN 201210357027 A CN201210357027 A CN 201210357027A CN 103677971 B CN103677971 B CN 103677971B
Authority
CN
China
Prior art keywords
node
thread
read
reading
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210357027.7A
Other languages
English (en)
Other versions
CN103677971A (zh
Inventor
吴振玉
郑润
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Xietong Zhilian Technology Co.,Ltd.
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201210357027.7A priority Critical patent/CN103677971B/zh
Publication of CN103677971A publication Critical patent/CN103677971A/zh
Application granted granted Critical
Publication of CN103677971B publication Critical patent/CN103677971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种多线程处理系统及方法,该系统包括一写线程、多个读线程以及一全局next指针,该写线程对一主链表进行写操作,该多个读线程均对该主链表进行读操作;当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针指示该目标节点的下一个节点的地址;当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next指针指示的地址并对该目标节点的下一个节点进行读操作。本发明能够使得读线程越过正在进行写操作的节点而继续对下一节点进行读操作,从而避免了读线程在读取时需要等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。

Description

多线程处理系统及方法
技术领域
本发明涉及一种多线程处理系统及方法,特别是涉及一种能够使得读线程越过正在进行写操作的节点而继续进行读操作的多线程处理系统以及一种利用该多线程处理系统实现的多线程处理方法。
背景技术
多线程共享链表是当前数据处理中比较热门的话题,即在该链表数据进行更新时仍有其它线程对该链表进行读操作。一般目前采用的主要处理方法是:在等到该链表更新完毕后才允许对该链表进行读操作,当一线程正在进行写操作时对整个链表进行加互斥锁,让其它线程等待,而对该链表中某一个节点进行写操作时也加互斥锁,让其它线程等待写操作完成之后,解锁并将该结点释放后再进行读操作。这样会导致当链表更新比较频繁时,写线程更新数据需要频繁加锁,而读线程只能等待解锁后才能进行读操作,造成读线程等待时间过长,严重降低了多线程处理的效率。
发明内容
本发明要解决的技术问题是为了克服现有技术中链表更新比较频繁时,写线程更新数据需要频繁加锁,而读线程只能等待解锁后才能进行读操作,造成读线程等待时间过长,严重降低了多线程处理的效率的缺陷,提供一种能够使得读线程越过正在进行写操作的节点而继续进行读操作的多线程处理系统以及一种利用该多线程处理系统实现的多线程处理方法。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种多线程处理系统,其特点在于,其包括一写线程、多个读线程以及一全局next指针(能够指向下一个节点的地址的指针),该写线程用于对一主链表进行写操作,该多个读线程均用于对该主链表进行读操作;
当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针用于指示该目标节点的下一个节点的地址;
当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均用于读取该全局next指针指示的地址处的节点。
对于该主链表,在同一时间段只能进行一个写操作,并且进行写操作的多个节点都是一个个按顺序依次进行的,而读操作则可以多个同时进行,这都属于本领域的公知技术,在此就不再赘述。
通过使得读取至该目标节点的该至少一个读线程均读取该全局next指针指示的地址并对该目标节点的下一个节点进行读操作,就避免了在读取至该目标节点时,因为该目标节点正在被写而导致该至少一个读线程都只能等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。
较佳地,该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还用于在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;
每个该读线程均具有一相匹配的副链表,该至少一个读线程还用于读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。
由于在该写线程对该主链表进行写操作时会添加互斥锁,使得其它读线程只有在解锁并释放节点后才能进行读操作。因此,若该至少一个读线程读取至该目标节点,并通过互斥锁检测出该目标节点正在被写时,该至少一个读线程会跳过该目标节点继续读取下一节点,并且,该至少一个读线程还能够读取该目标节点的标志位的值,从而对该写操作进行检测,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,而在读取完该主链表中的所有节点后,该至少一个读线程会分别读取相匹配的副链表中保存的该目标节点的地址,从而就能够返回该主链表中读取进行写操作后的该目标节点的内容。而如果该至少一个读线程读取该目标节点的标志位的值后检测出该写操作为该删除节点的操作,则该至少一个读线程只会跳过该目标节点继续读取下一节点,而不会再将该目标节点的地址保存在相匹配的副链表中。
较佳地,该目标节点的标志位有八位,当该八位中的第一位的值为1时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为1时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为1时,表征该写操作为该删除节点的操作。
若该写操作为该插入节点的操作,则该写线程将该目标节点的八位标志位的第一位赋值为1,若该写操作为该修改节点的操作,则该写线程将该第二位赋值为1,若该写操作为该删除节点的操作,则该写线程将该第三位赋值为1。
较佳地,该写线程的写操作的优先级高于该多个读线程的读操作。当该写线程与读线程准备对同一个节点进行操作时,该写线程的写操作优先级高于读线程的读操作,因此会首先对该节点进行写操作,在写操作完成之后才允许读线程进行读操作,从而保证了读线程读取的数据为写操作完成之后更新的数据。
本发明的目的在于还提供了一种多线程处理方法,其特点在于,其利用上述的多线程处理系统实现,该多线程处理方法为:该写线程对该主链表进行写操作同时该多个读线程均对该主链表进行读操作,并且当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针指示该目标节点的下一个节点的地址,而当该至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next指针指示的地址处的节点。
较佳地,该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;
每个该读线程均具有一相匹配的副链表,该至少一个读线程还读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。
较佳地,该目标节点的标志位有八位,当该八位中的第一位的值为1时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为1时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为1时,表征该写操作为该删除节点的操作。
较佳地,该写线程的写操作的优先级高于该多个读线程的读操作。
本发明的积极进步效果在于:本发明能够使得读线程越过正在进行写操作的节点而继续对下一节点进行读操作,从而避免了读线程在读取时需要等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。
附图说明
图1为本发明的一较佳实施例的多线程处理系统的结构图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
如图1所示,本发明的多线程处理系统包括一写线程1、多个读线程2以及一全局next指针3。
本发明的多线程处理系统主要对多个线程共享一主链表进行处理,其中,该写线程1能够对该主链表中的节点进行写操作,而该多个读线程2则能够同时对该主链表中的节点进行读操作,而该主链表中的每个节点均包括一个标志位和节点内容。
在本实施例中,该主链表中的节点的标志位均具有八位,该标志位能够对该写线程1进行的写操作进行表征。而该写线程1对该主链表进行的写操作主要包括一插入节点的操作、一修改节点的操作或一删除节点的操作,对应地,当该八位中的第一位的值为1时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为1时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为1时,表征该写操作为该删除节点的操作。
该写线程1具体在对该主链表中的一目标节点进行该插入节点的操作时,就会首先插入一待插入的节点,同时将该目标节点的标志位的第一位赋值为1(其余为0)并使得该全局next指针3指示该目标节点的下一个节点的地址,添加互斥锁后再添加节点内容至该待插入的节点,而在该插入节点的操作完成之后,就会将该目标节点的标志位的第一位还原为0同时解锁,整个的写操作的过程均为原子操作,不会被线程调度机制打断。
而在该写线程1对该目标节点进行该修改节点的操作时,也会首先将该目标节点的标志位的第二位赋值为1(其余为0)并使得该全局next指针3指示该目标节点的下一个节点的地址,添加互斥锁后再修改该目标节点的节点内容,而在该修改节点的操作完成之后,就会将该目标节点的标志位的第二位还原为0同时解锁,整个过程同样为原子操作,不会被线程调度机制打断。
而在该写线程1对该目标节点进行该删除节点的操作时,也会首先将该目标节点的标志位的第三位赋值为1(其余为0)并使得该全局next指针3指示该目标节点的下一个节点的地址,添加互斥锁后再删除该目标节点,而在该删除节点的操作完成之后,就直接解锁,整个过程同样为原子操作,不会被线程调度机制打断。
在该写线程1对该主链表中的该目标节点进行写操作时,该多个读线程2则同时对该主链表进行读操作,当该多个读线程2中的至少一个读线程2读取至该目标节点时,会首先通过互斥锁判断出该目标节点正在被写,此时,该至少一个读线程2就无法读取该目标节点的节点内容,转而读取该全局next指针3指示的该目标节点的下一个节点的地址。这样,该至少一个读线程2就会越过该目标节点而读取该目标节点的下一个节点的节点内容,从而就避免了在读取至该目标节点时,因为该目标节点正在被写而导致该至少一个读线程2都只能等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程2的读取速度,提供了工作效率。
同时,每个读线程2均具有一相匹配的副链表,该至少一个读线程2在读取至该目标节点时,还会读取该目标节点的标志位的值,从而对该写操作进行检测。
如果该至少一个读线程2检测出该目标节点的标志位的第一位或第二位的值为1时,则表明该写操作为该插入节点的操作或该修改节点的操作,此时,该至少一个读线程会将该目标节点的地址保存在与该至少一个读线程2相匹配的副链表中,并且在对该主链表中除该目标节点之外的节点的读操作完成之后,该至少一个读线程2会分别读取相匹配的副链表中保存的该目标节点的地址,从而就能够返回该主链表中读取进行写操作后的该目标节点的内容。
并且,如果该写操作为该插入节点的操作,则该至少一个读线程2在读取相匹配的副链表中保存的该目标节点的地址后,就返回该主链表中读取进行写操作的该目标节点的内容以及插入的该待插入的节点的内容。
而如果该至少一个读线程2检测出该目标节点的标志位的第三位的值为1时,则表明该写操作为该删除节点的操作,此时,由于进行删除操作后的该目标节点会从该主链表中消失,该至少一个读线程2只会跳过该目标节点继续读取下一节点,而不会再将该目标节点的地址保存在相匹配的副链表中。
其中,在本实施例的具体实施过程中,该写线程1的写操作的优先级高于该多个读线程2的读操作。即当该写线程1与读线程2同时准备对同一个节点进行操作时,该写线程1的写操作优先级高于读线程2的读操作,因此会首先对该节点进行写操作,在写操作完成之后才允许读线程2进行读操作,从而保证了读线程2读取的数据为写操作完成之后更新的数据。
而本发明利用本实施例的多线程处理系统实现的多线程处理方法具体为:该写线程对该主链表进行写操作同时该多个读线程均对该主链表进行读操作,并且当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针3指示该目标节点的下一个节点的地址,而当该至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next指针3指示的地址处的节点。
同时,该至少一个读线程2读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程2相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程2相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点,至此流程结束。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (6)

1.一种多线程处理系统,其特征在于,其包括一写线程、多个读线程以及一全局next指针,该写线程用于对一主链表进行写操作,该多个读线程均用于对该主链表进行读操作;
当该写线程对该主链表中的一目标节点进行写操作时,该全局next 指针用于指示该目标节点的下一个节点的地址;
当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均用于读取该全局next 指针指示的地址处的节点;
该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还用于在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;
每个该读线程均具有一相匹配的副链表,该至少一个读线程还用于读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。
2. 如权利要求1所述的多线程处理系统,其特征在于,该目标节点的标志位有八位,当该八位中的第一位的值为1 时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为1 时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为1 时,表征该写操作为该删除节点的操作。
3.如权利要求1或2所述的多线程处理系统,其特征在于,该写线程的写操作的优先级高于该多个读线程的读操作。
4. 一种多线程处理方法,其特征在于,其利用如权利要求1 所述的多线程处理系统实现,该多线程处理方法为:该写线程对该主链表进行写操作同时该多个读线程均对该主链表进行读操作,并且当该写线程对该主链表中的一目标节点进行写操作时,该全局next 指针指示该目标节点的下一个节点的地址,而当该至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next 指针指示的地址处的节点;
该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;
每个该读线程均具有一相匹配的副链表,该至少一个读线程还读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。
5.如权利要求4 所述的多线程处理方法,其特征在于,该目标节点的标志位有八位,当该八位中的第一位的值为1 时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为1 时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为1 时,表征该写操作为该删除节点的操作。
6.如权利要求4或5中任意一项所述的多线程处理方法,其特征在于,该写线程的写操作的优先级高于该多个读线程的读操作。
CN201210357027.7A 2012-09-21 2012-09-21 多线程处理系统及方法 Active CN103677971B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210357027.7A CN103677971B (zh) 2012-09-21 2012-09-21 多线程处理系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210357027.7A CN103677971B (zh) 2012-09-21 2012-09-21 多线程处理系统及方法

Publications (2)

Publication Number Publication Date
CN103677971A CN103677971A (zh) 2014-03-26
CN103677971B true CN103677971B (zh) 2017-11-24

Family

ID=50315628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210357027.7A Active CN103677971B (zh) 2012-09-21 2012-09-21 多线程处理系统及方法

Country Status (1)

Country Link
CN (1) CN103677971B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681819B (zh) * 2016-12-29 2020-11-06 杭州迪普科技股份有限公司 一种线程的处理方法及装置
WO2019014808A1 (en) * 2017-07-17 2019-01-24 Beijing Didi Infinity Technology And Development Co., Ltd. SYSTEMS AND METHODS FOR SPATIAL INDEX
CN108021339B (zh) * 2017-11-03 2021-05-04 网宿科技股份有限公司 一种磁盘读写的方法、设备以及计算机可读存储介质
CN110704199A (zh) * 2019-09-06 2020-01-17 深圳平安通信科技有限公司 数据压缩方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545658A (zh) * 2001-07-17 2004-11-10 �йȲ��� 具有双端口存储器仿真配置的交换结构
CN101631328A (zh) * 2009-08-14 2010-01-20 北京星网锐捷网络技术有限公司 一种对共享资源互斥访问的同步方法、装置和网络设备
CN101753439A (zh) * 2009-12-18 2010-06-23 深圳市融创天下科技发展有限公司 一种流媒体分发传输方法
CN102591725A (zh) * 2011-12-20 2012-07-18 浙江鸿程计算机系统有限公司 一种异构数据库之间多线程数据交换的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095699B2 (en) * 2006-09-29 2012-01-10 Mediatek Inc. Methods and apparatus for interfacing between a host processor and a coprocessor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545658A (zh) * 2001-07-17 2004-11-10 �йȲ��� 具有双端口存储器仿真配置的交换结构
CN101631328A (zh) * 2009-08-14 2010-01-20 北京星网锐捷网络技术有限公司 一种对共享资源互斥访问的同步方法、装置和网络设备
CN101753439A (zh) * 2009-12-18 2010-06-23 深圳市融创天下科技发展有限公司 一种流媒体分发传输方法
CN102591725A (zh) * 2011-12-20 2012-07-18 浙江鸿程计算机系统有限公司 一种异构数据库之间多线程数据交换的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PJVM:基于Java的面向对象分布并行处理系统;刘溥等;《计算机研究与发展》;19880615;第35卷(第6期);参见正文第3节 *

Also Published As

Publication number Publication date
CN103677971A (zh) 2014-03-26

Similar Documents

Publication Publication Date Title
CN103514053B (zh) 一种基于共享内存的进程间通讯方法
CN102289405B (zh) 追踪推测性执行的指令
CN104335175B (zh) 基于系统性能度量在系统节点之间标识和迁移线程的方法和系统
CN103677971B (zh) 多线程处理系统及方法
CN103365627B (zh) 执行单元内的数据转发系统和方法
CN102687128B (zh) 运算处理装置
CN106062707A (zh) 使能混合事务存储器系统中的最大并发性
EP2641171B1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US7904618B2 (en) Buffer managing method and buffer managing apparatus
US8028284B2 (en) Data processing system and program for transferring data
CN104750459A (zh) 带有事务功能以及报告事务操作的日志记录电路的处理器
US10649780B2 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
CN104813293B (zh) 使用动态分配的脏掩码空间的存储器管理
CN103383642A (zh) 用于从超前运行重新进入的设检查点的缓冲区
CN107278296A (zh) 用于响应于事务执行生成跟踪数据的装置和方法
US11397560B2 (en) System and method for managing multi-core accesses to shared ports
CN107608885A (zh) 内存泄漏点的定位方法、装置、系统及可读存储介质
CN102141955B (zh) 一种基于Linux的内核日志系统及实现方法
EP3140730B1 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
CN104077078B (zh) 读存储区、更新存储区的方法及装置
US7130990B2 (en) Efficient instruction scheduling with lossy tracking of scheduling information
CN103207776B (zh) 一种gene乱序发射处理器内核
US20170139708A1 (en) Data processing
US9304777B1 (en) Method and apparatus for determining relative ages of entries in a queue
CN108614772A (zh) 一种并发检测堆缓冲区溢出的架构及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201118

Address after: 221700 4-1-110-shop, Nanyuan new town, Fengxian County, Xuzhou City, Jiangsu Province

Patentee after: Song Yixiao

Address before: Songjiang District shihudong Town Tower Road 201617 min 579 Lane Shanghai No. -26

Patentee before: Phicomm (Shanghai) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211011

Address after: 213002 room 801, building 3, No. 9, Taihu East Road, Xinbei District, Changzhou City, Jiangsu Province

Patentee after: Jiangsu Xietong Zhilian Technology Co.,Ltd.

Address before: 221700 4-1-110-shop, Nanyuan new town, Fengxian County, Xuzhou City, Jiangsu Province

Patentee before: Song Yixiao