发明名称 Asynchronous callback driven messaging request completion notification
摘要 Through an asynchronous callback enhancement, a thread makes a non-blocking request (e.g., send, receive, I/O) to a message passing interface library, and a callback routine is associated with the request as an asynchronous callback to the thread. The callback is queued for execution in the requesting thread and so has a deterministic execution context. Callback queuing may occur in response to another thread detecting that the request is complete. Further control over callback execution is provided by state transitions which determine whether the thread is open to processing (e.g., executing) an asynchronous callback. Callback association is done by a broad or by narrow association routines. An application which has processes organized in ranks, each including a communication thread with associated callback(s), and multiple worker threads. Interruptible wait enhancements may also be present.
申请公布号 US9043796(B2) 申请公布日期 2015.05.26
申请号 US201113082193 申请日期 2011.04.07
申请人 Microsoft Technology Licensing, LLC 发明人 Tillier Fabian Samuel
分类号 G06F9/52 主分类号 G06F9/52
代理机构 代理人 Haslam Brian;Allen Mike;Minhas Micky
主权项 1. A process comprising the following steps: a user-mode thread X of an application which has multiple threads in a multithreaded computer system making a non-blocking request to a message passing interface library which is limited in at least one of the following ways: (a) all calls to the message passing interface library from the application must come from thread X, (b) all application calls to the message passing interface library are serialized and therefore no other thread of the application may call the message passing library while thread X is calling the message passing library; deterministically associating in a memory of the multithreaded computer system a callback routine with the non-blocking request as an asynchronous callback to the thread X, the associating step being deterministic in that the callback will be executed by the thread X that made the non-blocking request rather than being executed by some other thread of the application; the thread X transitioning from a closed state in which the thread X will not process an asynchronous callback to an open state in which the thread X will process an asynchronous callback; and a thread other than thread X detecting that the request is complete, and then queueing the callback routine for execution by thread X.
地址 Redmond WA US