Maintaining the responsiveness of a user interface while performing a synchronous operation

US11074112B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11074112-B2
Application numberUS-201715406093-A
CountryUS
Kind codeB2
Filing dateJan 13, 2017
Priority dateJan 13, 2017
Publication dateJul 27, 2021
Grant dateJul 27, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Systems, methods, and software are disclosed herein for maintain the responsiveness of a user interface to an application. In an implementation, a synchronous operation is commenced on a main thread of an application. The application monitors for a request by an additional thread to interrupt the synchronous operation in favor of an asynchronous operation. The synchronous operation is canceled in response to the request and is retried after completing the asynchronous operation.

First claim

Opening claim text (preview).

The invention claimed is: 1. A computing apparatus comprising: one or more computer readable storage media; a processing system operatively coupled with the one or more computer readable storage media; and program instructions stored on the one or more computer readable storage media for performing a synchronous operation on a main thread of an application and maintaining responsiveness in a user interface to the application; wherein the program instructions, when executed by the processing system, direct the processing system to at least: start the synchronous operation on the main thread of the application at a beginning of the synchronous operation, wherein the synchronous operation comprises an auto-save operation; via the synchronous operation, detect a request by an additional thread of the application to interrupt the synchronous operation in favor of an asynchronous operation, wherein the additional thread comprises a user interface thread that generates the request in response to an input received via the user interface; via the synchronous operation, cancel the synchronous operation in response to the request; immediately after completing the asynchronous operation, restart the synchronous operation from the beginning of the synchronous operation; detect at least one other request by the additional thread to interrupt the synchronous operation in favor of a different asynchronous operation; and override the one other request in favor of the synchronous operation. 2. The computing apparatus of claim 1 wherein the main thread includes an execution queue having an order in which operations are executed, and wherein the program instructions, when executed by the processing system, further direct the processing system to, subsequent to canceling the synchronous operation, insert the synchronous operation in the execution queue in a position of the order immediately after the asynchronous operation. 3. The computing apparatus of claim 1 wherein the program instructions further direct the processing system to, responsive to detecting the input to the user interface of the application, generate the request via the additional thread. 4. The computing apparatus of claim 1 wherein the application includes an input event queue, and wherein to detect the request, the program instructions direct the processing system to scan the input event queue. 5. The computing apparatus of claim 1 wherein the synchronous operation further comprises at least one of an operation timer, a block scheduler, and an abort manager. 6. The computing apparatus of claim 1 wherein the asynchronous operation takes a lesser amount of time to complete than the synchronous operation and wherein the different asynchronous operation takes a greater amount of time to complete than the synchronous operation. 7. The computing apparatus of claim 1 wherein to detect the request, the program instructions direct the processing system to check a global flag set by the additional thread. 8. A method for performing a synchronous operation on a main thread of an application while maintaining responsiveness in a user interface to the application, the method comprising: starting the synchronous operation on the main thread of the application at a beginning of the synchronous operation, wherein the synchronous operation comprises an auto-save operation; via the synchronous operation, detecting a request by an additional thread of the application to interrupt the synchronous operation in favor of an asynchronous operation, wherein the additional thread comprises a user interface thread that generates the request in response to an input received via the user interface; via the synchronous operation, canceling the synchronous operation in response to the request; immediately after completing the asynchronous operation, restarting the synchronous operation from the beginning of the synchronous operation; detecting at least one other request by the additional thread to interrupt the synchronous operation in favor of a different asynchronous operation; and overriding the one other request in favor of the synchronous operation. 9. The method of claim 8 wherein the main thread includes an execution queue having an order in which operations are executed, and wherein the method further comprises, subsequent to canceling the synchronous operation, inserting the synchronous operation in the execution queue in a position of the order immediately after the asynchronous operation. 10. The method of claim 8 further comprising, responsive to detecting the input to the user interface of the application, generating the request via the additional thread. 11. The method of claim 8 wherein the application includes an input event queue, and wherein detecting the request comprises scanning the input event queue. 12. The method of claim 8 wherein the synchronous operation further comprises at least one of an operation timer, a block scheduler, and an abort manager. 13. The method of claim 12 wherein the asynchronous operation takes a lesser amount of time to complete than the synchronous operation and wherein the different asynchronous operation takes a greater amount of time to complete than the synchronous operation. 14. The method of claim 8 wherein detecting the request comprises checking a global flag set by the additional thread. 15. One or more non-transitory computer readable storage media having program instructions stored thereon for performing a synchronous operation on a main thread of an application while maintaining responsiveness in a user interface to the application, wherein the program instructions, when executed by a processing system, direct the processing system to at least: start the synchronous operation on the main thread of the application at a beginning of the synchronous operation, wherein the synchronous operation comprises an auto-save operation; via the synchronous operation, detect a request by a user interface thread of the application to interrupt the synchronous operation in favor of an asynchronous operation, wherein the user interface thread generates the request in response to an input received via the user interface; via the synchronous operation, cancel the synchronous operation in response to the request; immediately after completing the asynchronous operation, restart the synchronous operation from the beginning of the synchronous operation; detect at least one other request by the user interface thread to interrupt the synchronous operation in favor of a different asynchronous operation; and override the one other request in favor of the synchronous operation. 16. The non-transitory one or more computer readable storage media of claim 15 wherein the main thread includes an execution queue having an order in which operations are executed, and wherein the program instructions, when executed by the processing system, further direct the processing system to, subsequent to canceling the synchronous operation, insert the synchronous operation in the execution queue in a position of the order immediately after the asynchronous operation. 17. The non-transitory one or more computer readable storage media of claim 15 wherein the program instructions further direct the processing system to, responsive to detecting the input to the user interface of the application, generate the request via the user interface thread. 18. The non-transitory one or more computer readable storage media of claim 15 wherein to detect the request, the program instructions direct the process

Assignees

Inventors

Classifications

  • G06F9/52Primary

    Program synchronisation; Mutual exclusion, e.g. by means of semaphores · CPC title

  • Execution arrangements for user interfaces · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11074112B2 cover?
Systems, methods, and software are disclosed herein for maintain the responsiveness of a user interface to an application. In an implementation, a synchronous operation is commenced on a main thread of an application. The application monitors for a request by an additional thread to interrupt the synchronous operation in favor of an asynchronous operation. The synchronous operation is canceled …
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/52. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 27 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 7 related publications on this page (citations in our corpus or others sharing the same primary CPC).