Parallel DLL tree initialization
    1.
    发明授权
    Parallel DLL tree initialization 有权
    并行DLL树初始化

    公开(公告)号:US08707283B2

    公开(公告)日:2014-04-22

    申请号:US11693102

    申请日:2007-03-29

    IPC分类号: G06F9/44

    CPC分类号: G06F9/445

    摘要: A parallel processing method and apparatus for initializing libraries is disclosed. Libraries for an application are identified, an initialization order for the libraries is determined, and the libraries are initialized in asynchronous stages. The initialization order is determined by forming a library tree of the libraries' references and determining a load order for the references according to the levels of the references in the library tree. The asynchronous stages comprise a loading stage that includes a load queue, a snapping stage that includes a snap queue, and an initializing stage that includes an initialize queue.

    摘要翻译: 公开了一种用于初始化库的并行处理方法和装置。 识别应用程序的库,确定库的初始化顺序,并以异步阶段初始化库。 初始化顺序通过形成库引用的库树来确定,并根据库树中引用的级别确定引用的加载顺序。 异步阶段包括加载阶段,其包括加载队列,包括快照队列的捕捉阶段以及包括初始化队列的初始化阶段。

    DYNAMIC DLL CYCLE RESOLUTION
    2.
    发明申请
    DYNAMIC DLL CYCLE RESOLUTION 有权
    动态DLL循环分辨率

    公开(公告)号:US20080244550A1

    公开(公告)日:2008-10-02

    申请号:US11693092

    申请日:2007-03-29

    IPC分类号: G06F9/44

    CPC分类号: G06F9/44521

    摘要: Deterministically resolving cycles in a library tree is disclosed. Resolving cycles supports certain processes such as safe library initialization. Cycles in the library tree are identified; at least one soft link in each identified cycle is identified; and the at least one soft link in each identified cycle is broken. If a cycle has no soft links, notification is provided indicating that the cycle cannot be broken. Identifying at least one soft link in each identified cycle comprises, for each link in the cycle, determining the dependent and supporting libraries; and determining if one or more functions in the supporting library are required for initializing the dependent library.

    摘要翻译: 公开了确定性地解析库树中的循环。 解决循环支持某些进程,例如安全库初始化。 识别图书馆树中的周期; 识别每个识别周期中的至少一个软链路; 并且每个识别的周期中的至少一个软链路被破坏。 如果一个周期没有软链接,则提供指示该周期不能被破坏的通知。 在每个识别的周期中识别至少一个软链路包括:对于循环中的每个链路,确定依赖和支持的库; 以及确定支持库中的一个或多个功能是否需要初始化依赖库。

    ONE-TIME INITIALIZATION
    3.
    发明申请
    ONE-TIME INITIALIZATION 有权
    一次性初始化

    公开(公告)号:US20110214128A1

    公开(公告)日:2011-09-01

    申请号:US13106850

    申请日:2011-05-12

    IPC分类号: G06F9/46

    CPC分类号: G06F9/4806

    摘要: Aspects of the present invention are directed at providing safe and efficient ways for a program to perform a one-time initialization of a data item in a multi-threaded environment. In accordance with one embodiment, a method is provided that allows a program to perform a synchronized initialization of a data item that may be accessed by multiple threads. More specifically, the method includes receiving a request to initialize the data item from a current thread. In response to receiving the request, the method determines whether the current thread is the first thread to attempt to initialize the data item. If the current thread is the first thread to attempt to initialize the data item, the method enforces mutual exclusion and blocks other attempts to initialize the data item made by concurrent threads. Then, the current thread is allowed to execute program code provided by the program to initialize the data item.

    摘要翻译: 本发明的方面旨在为程序在多线程环境中执行数据项的一次初始化提供安全和有效的方式。 根据一个实施例,提供了一种允许程序执行可被多个线程访问的数据项的同步初始化的方法。 更具体地说,该方法包括从当前线程接收初始化数据项的请求。 响应于接收到请求,该方法确定当前线程是否是尝试初始化数据项的第一线程。 如果当前线程是尝试初始化数据项的第一个线程,则该方法会强制执行互斥,并阻止其他尝试初始化由并发线程创建的数据项。 然后,允许当前线程执行程序提供的程序代码来初始化数据项。

    Dynamic DLL cycle resolution
    4.
    发明授权
    Dynamic DLL cycle resolution 有权
    动态DLL循环分辨率

    公开(公告)号:US07900217B2

    公开(公告)日:2011-03-01

    申请号:US11693092

    申请日:2007-03-29

    IPC分类号: G06F13/00

    CPC分类号: G06F9/44521

    摘要: Deterministically resolving cycles in a library tree is disclosed. Resolving cycles supports certain processes such as safe library initialization. Cycles in the library tree are identified; at least one soft link in each identified cycle is identified; and the at least one soft link in each identified cycle is broken. If a cycle has no soft links, notification is provided indicating that the cycle cannot be broken. Identifying at least one soft link in each identified cycle comprises, for each link in the cycle, determining the dependent and supporting libraries; and determining if one or more functions in the supporting library are required for initializing the dependent library.

    摘要翻译: 公开了确定性地解析库树中的循环。 解决循环支持某些进程,例如安全库初始化。 识别图书馆树中的周期; 识别每个识别周期中的至少一个软链路; 并且每个识别的周期中的至少一个软链路被破坏。 如果一个周期没有软链接,则提供指示该周期不能被破坏的通知。 在每个识别的周期中识别至少一个软链路包括:对于循环中的每个链路,确定依赖和支持的库; 以及确定支持库中的一个或多个功能是否需要初始化依赖库。

    PARALLEL DLL TREE INITIALIZATION
    5.
    发明申请
    PARALLEL DLL TREE INITIALIZATION 有权
    并行DLL树初始化

    公开(公告)号:US20080244551A1

    公开(公告)日:2008-10-02

    申请号:US11693102

    申请日:2007-03-29

    IPC分类号: G06F9/44

    CPC分类号: G06F9/445

    摘要: A parallel processing method and apparatus for initializing libraries is disclosed. Libraries for an application are identified, an initialization order for the libraries is determined, and the libraries are initialized in asynchronous stages. The initialization order is determined by forming a library tree of the libraries' references and determining a load order for the references according to the levels of the references in the library tree. The asynchronous stages comprise a loading stage that includes a load queue, a snapping stage that includes a snap queue, and an initializing stage that includes an initialize queue.

    摘要翻译: 公开了一种用于初始化库的并行处理方法和装置。 识别应用程序的库,确定库的初始化顺序,并以异步阶段初始化库。 初始化顺序通过形成库引用的库树来确定,并根据库树中引用的级别确定引用的加载顺序。 异步阶段包括加载阶段,其包括加载队列,包括快照队列的捕捉阶段以及包括初始化队列的初始化阶段。

    One-time initialization
    6.
    发明授权

    公开(公告)号:US09600325B2

    公开(公告)日:2017-03-21

    申请号:US13106850

    申请日:2011-05-12

    IPC分类号: G06F9/46 G06F9/48

    CPC分类号: G06F9/4806

    摘要: Aspects of the present invention are directed at providing safe and efficient ways for a program to perform a one-time initialization of a data item in a multi-threaded environment. In accordance with one embodiment, a method is provided that allows a program to perform a synchronized initialization of a data item that may be accessed by multiple threads. More specifically, the method includes receiving a request to initialize the data item from a current thread. In response to receiving the request, the method determines whether the current thread is the first thread to attempt to initialize the data item. If the current thread is the first thread to attempt to initialize the data item, the method enforces mutual exclusion and blocks other attempts to initialize the data item made by concurrent threads. Then, the current thread is allowed to execute program code provided by the program to initialize the data item.

    Cooperative DLL unload
    7.
    发明授权
    Cooperative DLL unload 失效
    合作DLL卸载

    公开(公告)号:US07865914B2

    公开(公告)日:2011-01-04

    申请号:US11693080

    申请日:2007-03-29

    IPC分类号: G06F9/44 G06F9/46 G06F12/00

    CPC分类号: G06F9/44563 G06F9/44594

    摘要: Loading and unloading a plurality of libraries on a computing device having a loader lock and internal and external counts for each library in the plurality of libraries is disclosed. The libraries assume an initialize state, followed by an initialized state, a pending unload state, and an unload state according to when the internal and external counts are incremented and decremented. When in the pending unload state, the functions of a library that include functions that require acquiring the loader lock exit, the internal count is decremented by one, and the loader lock is released. Prior to entering the pending unload state, a library may be placed into a reloadable state. A library in the reloadable state may be reloaded upon request until a timer times out. When the timer times out, the library in the reloadable state transitions into the pending unload state.

    摘要翻译: 公开了在具有加载器锁定的计算设备上加载和卸载多个库,并且对多个库中的每个库的内部和外部计数进行加载和卸载。 这些库根据内部和外部计数增加和减少的时间,假定初始化状态,后跟初始化状态,待处理卸载状态和卸载状态。 当处于待处理卸载状态时,包含需要获取加载器锁定退出的函数的库的函数将内部计数递减1,并释放加载程序锁。 在进入待处理卸载状态之前,库可能被置于可重新加载的状态。 可重新加载状态的库可以根据请求重新加载,直到定时器超时。 当定时器超时时,可重新加载状态的库转换为待处理的卸载状态。

    ONE-TIME INITIALIZATION
    8.
    发明申请

    公开(公告)号:US20110219379A1

    公开(公告)日:2011-09-08

    申请号:US13106836

    申请日:2011-05-12

    IPC分类号: G06F9/46

    CPC分类号: G06F9/4806

    摘要: Aspects of the present invention are directed at providing safe and efficient ways for a program to perform a one-time initialization of a data item in a multi-threaded environment. In accordance with one embodiment, a method is provided that allows a program to perform a synchronized initialization of a data item that may be accessed by multiple threads. More specifically, the method includes receiving a request to initialize the data item from a current thread. In response to receiving the request, the method determines whether the current thread is the first thread to attempt to initialize the data item. If the current thread is the first thread to attempt to initialize the data item, the method enforces mutual exclusion and blocks other attempts to initialize the data item made by concurrent threads. Then, the current thread is allowed to execute program code provided by the program to initialize the data item.

    COOPERATIVE DLL UNLOAD
    9.
    发明申请
    COOPERATIVE DLL UNLOAD 失效
    合作DLL卸载

    公开(公告)号:US20080243965A1

    公开(公告)日:2008-10-02

    申请号:US11693080

    申请日:2007-03-29

    IPC分类号: G06F17/30

    CPC分类号: G06F9/44563 G06F9/44594

    摘要: Loading and unloading a plurality of libraries on a computing device having a loader lock and internal and external counts for each library in the plurality of libraries is disclosed. The libraries assume an initialize state, followed by an initialized state, a pending unload state, and an unload state according to when the internal and external counts are incremented and decremented. When in the pending unload state, the functions of a library that include functions that require acquiring the loader lock exit, the internal count is decremented by one, and the loader lock is released. Prior to entering the pending unload state, a library may be placed into a reloadable state. A library in the reloadable state may be reloaded upon request until a timer times out. When the timer times out, the library in the reloadable state transitions into the pending unload state.

    摘要翻译: 公开了在具有加载器锁定的计算设备上加载和卸载多个库,并且对多个库中的每个库的内部和外部计数进行加载和卸载。 这些库根据内部和外部计数增加和减少的时间,假定初始化状态,后跟初始化状态,待处理卸载状态和卸载状态。 当处于待处理卸载状态时,包含需要获取加载器锁定退出的函数的库的函数将内部计数递减1,并释放加载程序锁。 在进入待处理卸载状态之前,库可能被置于可重新加载的状态。 可重新加载状态的库可以根据请求重新加载,直到定时器超时。 当定时器超时时,可重新加载状态的库转换为待处理卸载状态。

    Manipulating a spin bit within the wait primitive
    10.
    发明申请
    Manipulating a spin bit within the wait primitive 有权
    在等待原语中操纵旋转位

    公开(公告)号:US20110047549A1

    公开(公告)日:2011-02-24

    申请号:US12544376

    申请日:2009-08-20

    IPC分类号: G06F9/46

    CPC分类号: G06F9/50 G06F9/526

    摘要: A method of avoiding unnecessary context switching in a multithreaded environment. A thread of execution of a process waiting on a lock protecting access to a shared resource may wait for the lock to be released by executing in a loop, or “spin”. The waiting thread may continuously check, in a user mode of an operating system, an indicator of whether the lock has been released. After a certain time period, the thread may stop spinning and enter a kernel mode of the operating system. Subsequently, before going to sleep which entails costly context switching, the thread may perform an additional check of the indicator to determine whether the lock has been released. If this is the case, the thread returns to user mode and the unnecessary context switching is avoided.

    摘要翻译: 一种在多线程环境中避免不必要的上下文切换的方法。 执行等待锁定保护对共享资源的访问的进程的线程可以等待通过在循环中执行或“旋转”来释放锁定。 等待线程可以在操作系统的用户模式下连续检查锁定是否被释放的指示。 一段时间后,线程可能停止旋转并进入操作系统的内核模式。 随后,在睡眠之前,这需要昂贵的上下文切换,线程可以执行对指示符的附加检查以确定锁是否已被释放。 如果是这种情况,则线程返回到用户模式,避免了不必要的上下文切换。