CN108429799B - 批量文件的并行传输方法、装置及存储介质 - Google Patents

批量文件的并行传输方法、装置及存储介质 Download PDF

Info

Publication number
CN108429799B
CN108429799B CN201810171943.9A CN201810171943A CN108429799B CN 108429799 B CN108429799 B CN 108429799B CN 201810171943 A CN201810171943 A CN 201810171943A CN 108429799 B CN108429799 B CN 108429799B
Authority
CN
China
Prior art keywords
file
transmitted
blocks
batch
files
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
CN201810171943.9A
Other languages
English (en)
Other versions
CN108429799A (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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software 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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN201810171943.9A priority Critical patent/CN108429799B/zh
Publication of CN108429799A publication Critical patent/CN108429799A/zh
Application granted granted Critical
Publication of CN108429799B publication Critical patent/CN108429799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种批量文件的并行传输方法、装置及存储介质,用以解决由于线程资源不足,在待传文件数目较多的情况下,部分文件的等待时间过长的问题。所述传输方法包括:调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;通过各个线程传输所述文件块。

Description

批量文件的并行传输方法、装置及存储介质
技术领域
本发明涉及网络技术领域,特别是涉及一种批量文件的并行传输方法、装置及存储介质。
背景技术
由于互联网和移动互联网的快速发展,批量传输作为网络通信的基础应用得到广泛的使用。为充分利用CPU资源,提高了传输效率,批量文件传输多采用多线程方式。但由于线程资源不足,在待传文件数目较多的情况下,部分文件的等待时间过长。
发明内容
为了克服上述缺陷,本发明要解决的技术问题是提供一种批量文件的并行传输方法、装置及存储介质,用以解决由于线程资源不足,在待传文件数目较多的情况下,部分文件的等待时间过长的问题。
为解决上述技术问题,本发明实施例中的一种批量文件的并行传输方法,包括:
调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;
通过各个线程传输所述文件块。
可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块之前,包括:
将批量文件中的每个文件切片成多个文件块;
将各个文件的文件块存储到所述待传文件列表中。
可选地,所述将批量文件中的每个文件切片成多个文件块,包括:
将所述批量文件中每个文件切片成多个大小相同的文件块。
可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,还包括:
同一时间,每个线程从一个文件中获取文件块。
可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,包括:针对任意一个线程:
调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块。
可选地,所述调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块之前,包括:针对任意一个文件:
根据该文件的未传输部分大小,设置该文件的文件传输配额。
可选地,该文件的文件传输配额和该文件的未传输部分大小成正比例关系。
可选地,所述根据该文件的未传输部分大小,设置该文件的文件传输配额,包括:
确定该文件的未传输部分大小;
根据该文件的未传输部分大小和所述文件块的预设大小,设置该文件的文件传输配额。
为解决上述技术问题,本发明实施例中的一种批量文件的并行传输装置,包括存储器和处理器;所述存储器存储有批量文件的并行传输计算机程序,所述处理器执行所述计算机程序,以实现如上任意一项所述方法的步骤。
为解决上述技术问题,本发明实施例中的一种计算机可读存储介质,存储有批量文件的并行传输计算机程序,所述计算机程序被至少一个处理器执行时,以实现如上任意一项所述方法的步骤。
本发明有益效果如下:
本发明各个实施例通过调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;并通过各个线程传输所述文件块,从而将申请线程资源的单位从文件转化成文件块,从而有效解决由于线程资源不足,在待传文件数目较多的情况下,部分文件的等待时间过长的问题,进而更加公平的分配线程资源。
附图说明
图1是本发明实施例中一种批量文件的并行传输方法的流程图;
图2是本发明实施例中可选地批量文件的并行传输效果示意图;
图3是本发明实施例中根据文件传输配额进行批量文件的并行传输效果示意图;
图4是本发明实施例中一种批量文件的并行传输装置的结构示意图。
具体实施方式
为了解决现有技术的问题,本发明提供了一种批量文件的并行传输方法、装置及存储介质,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
使用用于区分元件的诸如“第一”、“第二”等前缀仅为了有利于本发明的说明,其本身没有特定的意义。
实施例一
本发明实施例提供一种批量文件的并行传输方法,如图1所示,所述方法包括:
S101,调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;
S102,通过各个线程传输所述文件块。
本发明实施例通过调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;并通过各个线程传输所述文件块,从而将申请线程资源的单位从文件转化成文件块,从而有效解决由于线程资源不足,在待传文件数目较多的情况下,部分文件的等待时间过长的问题,进而更加公平的分配线程资源。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块之前,包括:
将批量文件中的每个文件切片成多个文件块;
将各个文件的文件块存储到所述待传文件列表中。
其中,所述将批量文件中的每个文件切片成多个文件块,可选地,包括:
将所述批量文件中每个文件切片成多个大小相同的文件块。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,还包括:
同一时间,每个线程从一个文件中获取文件块。
例如,如图2所示,需要传输的文件包括文件A、B、C、D、E,线程资源包括三个线程1、2、3。
传输过程可以包括:
步骤11、将每个文件按照一定大小切分成文件块,每个文件需要按照相同文件块大小进行切分,至于文件块大小需要根据工程实践来确定;
步骤12、每个线程从待传文件列表中主动竞争需要传输的文件块,;
步骤13、每个线程传输竞争得到的文件块;
步骤14、传输完成的文件块从待传文件列表中删除。
如图2所示,文件块的传输顺序如箭头所示,每个文件在一定时间获得的线程资源基本上是公平的。虽然把文件切分块,但是同一时间一个文件只能由一个线程进行传输,从而有效避免同一个文件被两个线程同时写。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,包括:针对任意一个线程:
调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块。
在本发明实施例中,可选地,所述调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块之前,包括:针对任意一个文件:
根据该文件的未传输部分大小,设置该文件的文件传输配额。
其中,该文件的文件传输配额和该文件的未传输部分大小成正比例关系。
其中,所述根据该文件的未传输部分大小,设置该文件的文件传输配额,可选地,包括:
确定该文件的未传输部分大小;
根据该文件的未传输部分大小和所述文件块的预设大小,设置该文件的文件传输配额。
本发明实施例进一步通过文件配额传输批量文件,不仅很好解决公平占有线程资源,减少文件等待时间,同时有效减少切换成本。
例如,每个线程传输完一个文件块,切换到新的文件时需要重新打开新的文件,并跳转到待传位置读取文件块进行传输,传输完还得关闭文件,这些操作相对线程分组方案增加了很多的切换成本。而且文件越大切换次数越多,而本发明实施例中通过文件传输配额,确定线程一次传输文件块的数量,并且保证文件越大,配额就越多,从而有效减少切换成本。
本发明实施例中,根据该文件的未传输部分大小和所述文件块的预设大小,通过下式设置该文件的文件传输配额:
Figure GDA0003206554760000051
其中,Filequota为计算出来的文件传输配额数,它是一个整数,所以用箭头表示向上取整;也就是说计算出来的结果有小数不够一个配额,按照一个配额分配处理。Filesize表示剩余文件的大小,即该文件未传输部分大小,这样文件在传输过程中得到配额是动态改变的,这使得线程资源的分配动态保持公平,fileblocksize表示文件块的预设大小。x是对数底,这个数值用来调整文件传输下降速度的,例如可以设置成2。
如图3所示,使用了动态文件传输配额后,文件传输的过程包括:
步骤21,根据上述公式计算结果,线程传输了A文件的0、1块,B文件的0块,C文件的0、1、2块,D文件的0、1、2、3块,E文件的0块,文件E传输完成;
步骤22,根据上述公式计算结果,线程传输了A文件的2块,B文件的1块,C文件的3块,D文件的4、5、6块,文件A、B传输完成;
步骤23,根据上述公式计算结果,线程传输了C文件的4块,D文件的7块,文件C传输完成;
步骤24,根据上述公式计算结果,线程传输了D文件的8块,文件D传输完成;
从上述传输过程看,文件传输配额随着文件大小动态变化,文件越大配额越多,反之越少,通过引入配额可以有效的减少文件传输切换成本,同时最大程度上保留了文件切片带来公平占有线程资源的目标。
在实际应用中,本发明实施例通过文件传输配额和文件分块可以充分的利用线程资源,有效的减少线程闲置的问题,并有效减少切换成本。在保证传输公平性的同时,提高传输效率。并通过文件传输配额机制的引用进一步提高传输效率。
实施例二
本发明实施例提供一种批量文件的并行传输装置,如图4所示,所述装置包括存储器和处理器;所述存储器存储有批量文件的并行传输计算机程序,所述处理器执行所述计算机程序,以实现如实施例一中任意一项所述方法的步骤。
例如,所述处理器执行所述计算机程序,以实现如下步骤:
调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块;
通过各个线程传输所述文件块。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块之前,包括:
将批量文件中的每个文件切片成多个文件块;
将各个文件的文件块存储到所述待传文件列表中。
在本发明实施例中,可选地,所述将批量文件中的每个文件切片成多个文件块,包括:
将所述批量文件中每个文件切片成多个大小相同的文件块。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,还包括:
同一时间,每个线程从一个文件中获取文件块。
在本发明实施例中,可选地,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,包括:针对任意一个线程:
调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块。
在本发明实施例中,可选地,所述调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块之前,包括:针对任意一个文件:
根据该文件的未传输部分大小,设置该文件的文件传输配额。
在本发明实施例中,可选地,该文件的文件传输配额和该文件的未传输部分大小成正比例关系。
在本发明实施例中,可选地,所述根据该文件的未传输部分大小,设置该文件的文件传输配额,包括:
确定该文件的未传输部分大小;
根据该文件的未传输部分大小和所述文件块的预设大小,设置该文件的文件传输配额。
实施例三
本发明实施例提供一种计算机可读存储介质,所述存储介质存储有批量文件的并行传输计算机程序,所述计算机程序被至少一个处理器执行时,以实现如实施例一中任意一项所述方法的步骤。
本发明实施例中计算机可读存储介质可以是RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域已知的任何其他形式的存储介质。可以将一种存储介质藕接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息;或者该存储介质可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路中。
实施例二和实施例三在具体实现时,可以参阅实施例一,也具有相应的技术效果。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种批量文件的并行传输方法,其特征在于,所述方法包括:
将批量文件中的每个文件切片成多个文件块;
将各个文件的文件块存储到待传文件列表中;
调用预先申请的多个线程,以使所述多个线程从待传文件列表中主动竞争获取批量文件的文件块;
通过各个线程传输所述文件块;
所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,包括:针对任意一个线程:
调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块;
所述调用该线程,并根据预设的文件传输配额,以使该线程从待传文件列表中获取一个文件的文件块之前,包括:针对任意一个文件:
根据该文件的未传输部分大小,设置该文件的文件传输配额;
该文件的文件传输配额和该文件的未传输部分大小成正比例关系;
所述根据该文件的未传输部分大小,设置该文件的文件传输配额,包括:
确定该文件的未传输部分大小;
根据该文件的未传输部分大小和所述文件块的预设大小,设置该文件的文件传输配额。
2.如权利要求1所述的方法,其特征在于,所述将批量文件中的每个文件切片成多个文件块,包括:
将所述批量文件中每个文件切片成多个大小相同的文件块。
3.如权利要求1所述的方法,其特征在于,所述调用预先申请的多个线程,以使所述多个线程从待传文件列表中获取批量文件的文件块,还包括:
同一时间,每个线程从一个文件中获取文件块。
4.一种批量文件的并行传输装置,其特征在于,所述装置包括存储器和处理器;所述存储器存储有批量文件的并行传输计算机程序,所述处理器执行所述计算机程序,以实现如权利要求1-3中任意一项所述方法的步骤。
5.一种计算机可读存储介质,其特征在于,所述存储介质存储有批量文件的并行传输计算机程序,所述计算机程序被至少一个处理器执行时,以实现如权利要求1-3中任意一项所述方法的步骤。
CN201810171943.9A 2018-03-01 2018-03-01 批量文件的并行传输方法、装置及存储介质 Active CN108429799B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810171943.9A CN108429799B (zh) 2018-03-01 2018-03-01 批量文件的并行传输方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810171943.9A CN108429799B (zh) 2018-03-01 2018-03-01 批量文件的并行传输方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN108429799A CN108429799A (zh) 2018-08-21
CN108429799B true CN108429799B (zh) 2021-11-16

Family

ID=63157413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810171943.9A Active CN108429799B (zh) 2018-03-01 2018-03-01 批量文件的并行传输方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN108429799B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110493342B (zh) * 2019-08-21 2021-05-14 北京明朝万达科技股份有限公司 文件传输方法、装置、电子设备及可读存储介质
CN110784528B (zh) * 2019-10-22 2023-04-18 北京天融信网络安全技术有限公司 一种文件下载方法、装置和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996067A (zh) * 2009-08-19 2011-03-30 阿里巴巴集团控股有限公司 一种数据导出的方法和装置
CN103442037A (zh) * 2013-08-09 2013-12-11 华南理工大学 一种基于ftp协议实现超大文件多线程断点上传的方法
CN104796460A (zh) * 2015-03-26 2015-07-22 小米科技有限责任公司 文件传输方法和装置
CN105450769A (zh) * 2015-12-10 2016-03-30 浪潮通用软件有限公司 一种文件传输的方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
CN101656751B (zh) * 2008-08-18 2012-05-30 北京数码大方科技有限公司 加速上传与下载文件的方法及其系统
CN101980168A (zh) * 2010-11-05 2011-02-23 北京云快线软件服务有限公司 一种动态分块传输方法及装置
CN103248452B (zh) * 2012-02-10 2017-02-15 宇龙计算机通信科技(深圳)有限公司 数据发送装置、数据接收装置、终端和数据传输方法
CN102663104A (zh) * 2012-04-16 2012-09-12 苏州阔地网络科技有限公司 一种文件传输方法及系统
CN102611760A (zh) * 2012-04-16 2012-07-25 苏州阔地网络科技有限公司 一种文件的传输方法及系统
CN103227812B (zh) * 2013-03-19 2016-08-03 青岛海信宽带多媒体技术有限公司 智能设备中支持断点续传的下载方法和装置
CN103841196B (zh) * 2014-03-07 2017-05-17 长沙裕邦软件开发有限公司 一种基于多线程的文件上传系统及方法
CN106961454B (zh) * 2016-01-08 2021-01-05 阿里巴巴(中国)有限公司 文件下载方法、装置及终端设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996067A (zh) * 2009-08-19 2011-03-30 阿里巴巴集团控股有限公司 一种数据导出的方法和装置
CN103442037A (zh) * 2013-08-09 2013-12-11 华南理工大学 一种基于ftp协议实现超大文件多线程断点上传的方法
CN104796460A (zh) * 2015-03-26 2015-07-22 小米科技有限责任公司 文件传输方法和装置
CN105450769A (zh) * 2015-12-10 2016-03-30 浪潮通用软件有限公司 一种文件传输的方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"JAVASE程序设计";李瑞生;《JAVASE程序设计》;20161231;全文 *
"the hadoop distributed file system";Konstantin Shvachko;《IEEE》;20100628;全文 *
"基于FTP的文件高效上传方法的研究与实现";孟欣;《中国优秀硕士学位论文全文数据库信息科技辑》;20150115;全文 *

Also Published As

Publication number Publication date
CN108429799A (zh) 2018-08-21

Similar Documents

Publication Publication Date Title
US10127079B2 (en) Scheduling user requests in a distributed resource system having plurality of schedulers and coordinators
WO2016197716A1 (zh) 一种作业调度方法和装置
US8266289B2 (en) Concurrent data processing in a distributed system
CN107688492B (zh) 资源的控制方法、装置和集群资源管理系统
WO2022067531A1 (zh) 一种计算资源感知的任务调度方法
CN108429799B (zh) 批量文件的并行传输方法、装置及存储介质
CN109726005B (zh) 用于管理资源的方法、服务器系统和计算机可读介质
CN107203422B (zh) 一种面向高性能计算云平台的作业调度方法
CN109491775B (zh) 一种用于边缘计算环境下的任务处理与调度方法
CN110022364B (zh) 一种文件下载方法及服务器
CN109284192B (zh) 参数配置方法及电子设备
FI4006735T3 (fi) Hienorakeinen liikenteen muokkauksen siirto verkkoliitäntäkortille
CN108829510A (zh) 线程绑定处理方法和装置
CN103902384A (zh) 为虚拟机分配物理机的方法及装置
CN115904671B (zh) 一种边缘计算环境下的任务调度方法、装置、设备及介质
JP2018511209A5 (zh)
US20190141642A1 (en) Power allocation method and apparatus
CN105022668A (zh) 一种作业调度方法及系统
CN108984286A (zh) 一种云计算平台的资源调度方法和系统
CN109189581B (zh) 一种作业调度方法和装置
CN111143063B (zh) 任务的资源预约方法及装置
CN115640113A (zh) 多平面弹性调度方法
CN108268310B (zh) 一种确定最小调度粒度的方法及装置
CN109491798A (zh) 一种资源分配的方法及装置
CN110831220A (zh) 一种传输块tb调度方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant