Manipulating a spin bit within the wait primitive
    1.
    发明申请
    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.

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

    Preventing unnecessary context switching by employing an indicator associated with a lock on a resource
    2.
    发明授权
    Preventing unnecessary context switching by employing an indicator associated with a lock on a resource 有权
    通过使用与资源上的锁相关联的指示符来防止不必要的上下文切换

    公开(公告)号:US08510738B2

    公开(公告)日:2013-08-13

    申请号: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.

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

    Parallel DLL tree initialization
    3.
    发明授权
    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
    4.
    发明申请
    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
    5.
    发明申请
    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
    6.
    发明授权
    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.

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

    Handle passing using an inter-process communication
    7.
    发明授权
    Handle passing using an inter-process communication 失效
    使用进程间通信处理通过

    公开(公告)号:US07870558B2

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

    申请号:US11182712

    申请日:2005-07-15

    CPC分类号: G06F9/54 G06F9/468

    摘要: Sharing access to resources using an inter-process communication (“IPC”) provides a connection in which references to resources are passed from a sender to a receiver in a trusted third party environment. A sender in possession of a reference to a resource, such as a handle to an object, may initiate the connection with the receiver. In turn, the receiver may accept or refuse the connection, and may further specify the types of resources in which the receiver is interested when accepting through the connection. Sharing access to resources in this manner advantageously insures that only a process that already has access to a resource is able to share that access with another process, and further that only processes that wish to do so will accept such access.

    摘要翻译: 使用进程间通信(“IPC”)共享对资源的访问提供了一种连接,其中资源的引用在受信任的第三方环境中从发送者传递到接收者。 拥有对资源(例如对象的句柄)的引用的发送者可以发起与接收者的连接。 反过来,接收机可以接受或拒绝连接,并且可以进一步指定接收者在通过连接接受时感兴趣的资源的类型。 以这种方式共享对资源的访问有利地确保仅具有对资源的访问的进程能够与另一进程共享该访问,并且进一步地,仅希望这样访问的进程将接受该访问。

    Small barrier with local spinning
    8.
    发明申请
    Small barrier with local spinning 有权
    局部旋转的小障碍

    公开(公告)号:US20080288750A1

    公开(公告)日:2008-11-20

    申请号:US11803457

    申请日:2007-05-15

    IPC分类号: G06F9/30

    CPC分类号: G06F9/52 G06F9/522

    摘要: A barrier with local spinning. The barrier is described as a barrier object having a bit vector embedded as a pointer. If the vector bit is zero, the object functions as a counter; if the vector bit is one, the object operates as a pointer to a stack. The object includes the total number of threads required to rendezvous at the barrier to trigger release of the threads. The object points to a stack block list that describes each thread that has arrived at the barrier. Arriving at the barrier involves reading the top stack block, pushing onto the list a stack block for the thread that just arrived, decrementing the thread count, and spinning on corresponding local memory locations or timing out and blocking. When the last thread arrives at the barrier, the barrier is reset and all threads at the barrier are awakened for the start of the next process.

    摘要翻译: 当地纺纱的障碍。 屏障被描述为具有嵌入作为指针的位向量的屏障对象。 如果向量位为零,则该对象用作计数器; 如果向量位为1,则对象作为指向栈的指针。 该对象包括在屏障上会合触发线程释放所需的总线程数。 对象指向一个堆栈块列表,描述已经到达屏障的每个线程。 到达障碍层面是读取顶层堆栈块,向列表中推出刚刚到达的线程的堆栈块,减少线程计数,并旋转相应的本地存储器位置或超时并阻塞。 当最后一个线程到达屏障时,屏障被重置,并且屏障处的所有线程都被唤醒以用于下一个进程的开始。

    PARALLEL DLL TREE INITIALIZATION
    9.
    发明申请
    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.

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

    Wait on address synchronization interface
    10.
    发明授权
    Wait on address synchronization interface 有权
    等待地址同步接口

    公开(公告)号:US08490118B2

    公开(公告)日:2013-07-16

    申请号:US12958721

    申请日:2010-12-02

    CPC分类号: G06F9/541 G06F9/52

    摘要: In a first thread of a process a determination is made that a current value at a target address is not a desired value. In response to this determination, a first application programming interface (API) is invoked to indicate that the first thread is to sleep and be woken up when a second thread modifies the value at the target address. When a second thread modifies the value at the target address, the second thread invokes a second API to indicate that the value at the target address has been modified. In response to the second API being invoked, the first thread is woken up.

    摘要翻译: 在处理的第一线程中,确定目标地址处的当前值不是期望值。 响应于该确定,调用第一应用程序编程接口(API)以指示第一线程要休眠并且当第二线程修改目标地址处的值时被唤醒。 当第二个线程修改目标地址的值时,第二个线程调用第二个API来指示目标地址的值已被修改。 响应于第二个API被调用,第一个线程被唤醒。