← Back to Patent Explorer
US5706515A Expired / Lapsed US ⏱️ 0.0 years remaining

System and method for implementing an atomic wait for notification operation

Assignee: Sony Corp
•
Filing: 1996-03-25
•
Granted: 1998-01-06
•
Expires: 2016-03-25
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a resource allocation subsystem includes an initialization procedure for initializing monitors, a notify procedure and a wait procedure. Each monitor has an associated event data structure denoting the status of the monitor as Signaled or Unsignaled. Each monitor also stores a waiters value indicating how many threads are waiting on the monitor, a tickets value indicating how many of the threads are to receive notifications, and an epoch counter value. The notify procedure updates any specified monitor to the Signaled status, updates the specified monitor's tickets value to indicate how many waiting threads are to receive notifications, and updates the epoch counter to indicate an epoch value associated with the updating of the specified monitor's status to Signaled. The wait procedure blocks execution of a calling thread until a specified monitor's status is updated to Signaled and the monitor's epoch information indicates an epoch value distinct from the epoch value when the calling thread called the wait procedure. The wait procedure unblocks the calling thread when monitor's tickets value is non-zero, and decrements the tickets value to indicate that the calling thread has consumed one ticket.

Inventors

  • 👤 David W. Connelly
  • 👤 Patrick P. Chan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 19:59
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/50

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 175 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a resource allocation subsystem comprising: an initialization procedure, executable by said data processing unit, for initializing monitors, where each monitor is stored in said memory and has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing epoch information; a notify procedure, executable by said data processing unit, for updating any specified one of said monitors to said Signaled status and for updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; and a wait procedure, executable by said data processing unit, for blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution called said wait procedure.
Claim 2
Dependent Claim 175 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a resource allocation subsystem comprising: an initialization procedure, executable by said data processing unit, for initializing monitors, where each monitor is stored in said memory and has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing epoch information; a notify procedure, executable by said data processing unit, for updating any specified one of said monitors to said Signaled status and for updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; and a wait procedure, executable by said data processing unit, for blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution called said wait procedure.
Claim 3
Dependent Claim 28 words
The resource allocation subsystem of claim 1, said wait procedure including instructions for releasing ownership of said specified monitor and performing said execution blocking as an atomic operation.
Claim 4
Dependent Claim 145 words
The resource allocation subsystem of claim 2, each monitor further storing waiters information indicating how many threads are waiting on said monitor, and tickets information indicating how many of said waiting threads are to receive notifications; said notify procedure further for updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one; and said wait procedure further includes instructions for checking said specified monitor's tickets information when specified monitors status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said starting epoch value, for unblocking said calling thread of execution when said checked tickets information indicates a non-zero tickets value and for decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said associated monitor.
Claim 5
Dependent Claim 213 words
The resource allocation subsystem of claim 1, each monitor further storing a waiters value indicating how many threads are waiting on said monitor, and a tickets value indicating how many of said waiting threads are to receive notifications; said notify procedure further for increasing said specified monitor's tickets value by one to indicate that one additional thread is to receive a notification; said wait procedure further includes instructions for checking said specified monitor's tickets value when specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said epoch value when said calling thread of execution called said wait procedure, for unblocking said calling thread of execution when said tickets value is non-zero and for decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor; further including: a second notify procedure, executable by said data processing unit, for updating any specified one of said monitors to said Signaled status, for updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled, and for setting said specified monitor's tickets value to said waiters value so as to indicate that all waiting threads are to receive notifications.
Claim 6
Dependent Claim 153 words
The resource allocation subsystem of claim 4, further including: a timed wait procedure, executable by said data processing unit, for blocking execution of any calling thread of execution until (A) a specified time elapses or (B) a specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said epoch value when said calling thread of execution called said timed wait procedure; said timed wait procedure including instructions for checking said specified monitor's tickets value when specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said epoch Value when said calling thread of execution called said timed wait procedure, for unblocking said calling thread of execution when said tickets value is non-zero and for decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 7
Dependent Claim 239 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a resource allocation subsystem comprising: an initialization procedure for initializing monitors, where each monitor is stored in said memory and has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing waiters information indicating how many threads are waiting on said monitor, tickets information indicating how many of said waiting threads are to receive notifications, and epoch information; a notify procedure for updating any specified one of said monitors to said Signaled status and for updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one, and for updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; a wait procedure, executable by said data processing unit, for blocking execution of a calling thread of execution until a specified monitors status is updated to Signaled, said specified monitor's epoch information indicates an epoch value distinct from said epoch value when said calling thread called said wait procedure, and said tickets information indicates a non-zero tickets value, and for decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 8
Dependent Claim 239 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a resource allocation subsystem comprising: an initialization procedure for initializing monitors, where each monitor is stored in said memory and has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing waiters information indicating how many threads are waiting on said monitor, tickets information indicating how many of said waiting threads are to receive notifications, and epoch information; a notify procedure for updating any specified one of said monitors to said Signaled status and for updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one, and for updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; a wait procedure, executable by said data processing unit, for blocking execution of a calling thread of execution until a specified monitors status is updated to Signaled, said specified monitor's epoch information indicates an epoch value distinct from said epoch value when said calling thread called said wait procedure, and said tickets information indicates a non-zero tickets value, and for decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 9
Dependent Claim 28 words
The resource allocation subsystem of claim 6, said wait procedure including instructions for releasing ownership of said specified monitor and performing said execution blocking as an atomic operation.
Claim 10
Dependent Claim 166 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a method of operating the computer system, comprising the steps of: providing at least one monitor, stored in said memory, that has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing epoch information; performing a notify operation on any specified one of said monitors by updating said specified monitor to said Signaled status and updating said specified monitor's epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; and performing a wait operation by blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution began performing said wait operation.
Claim 11
Dependent Claim 166 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a method of operating the computer system, comprising the steps of: providing at least one monitor, stored in said memory, that has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing epoch information; performing a notify operation on any specified one of said monitors by updating said specified monitor to said Signaled status and updating said specified monitor's epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled; and performing a wait operation by blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution began performing said wait operation.
Claim 12
Dependent Claim 28 words
The method of claim 8, said step of performing a wait operation including releasing ownership of said specified monitor and performing said execution blocking as an atomic operation.
Claim 13
Dependent Claim 146 words
The method of claim 9, each monitor further storing waiters information indicating how many threads are waiting on said monitor, and tickets information indicating how many of said waiting threads are to receive notifications; said step or performing a notify operation including updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one; and said set of performing a wait operation including checking said specified monitor's tickets information when said specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said starting epoch value, unblocking said calling thread of execution when said checked tickets information indicates a non-zero tickets value, and decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said associated monitor.
Claim 14
Dependent Claim 197 words
The method of claim 8, each monitor further storing a waiters value indicating how many threads are waiting on said monitor, and a tickets value indicating how many of said waiting threads are to receive notifications; said step of performing a notify operation including increasing said specified monitors tickets value by one to indicate that one additional thread is to receive a notification; said step of performing a wait operation including checking said specified monitor's tickets value when specified monitor's status is updated to Signaled and said specified monitor's epoch information indicates an epoch value distinct from said starting epoch value, unblocking said calling thread of execution when said tickets value is non-zero, and decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor; further including: performing a second notify operation by updating any specified one of said monitors to said Signaled status, updating said epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled, and setting said specified monitors tickets value to said waiters value so as to indicate that all waiting threads are to receive notifications.
Claim 15
Dependent Claim 126 words
The method of claim 11, further including: performing a timed wait operation by blocking execution of any calling thread of execution until (A) a specified time elapses or (B) a specified monitor's status is updated to Signaled and said specified monitors epoch information indicates an epoch value distinct from said starting epoch value; said step of performing a timed wait operation including checking said specified monitor's tickets value when specified monitor's status is updated to Signaled and said specified monitors epoch information indicates an epoch value distinct from said starting epoch value, unblocking said calling thread of execution when said tickets value is non-zero, and decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 16
Dependent Claim 248 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a method of operating the computer system, comprising the steps of: providing at least one monitor, stored in said memory, that has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing waiters information indicating how many threads are waiting on said monitor, tickets information indicating how many of said waiting threads are to receive notifications, and epoch information; performing a notify operation on any specified one of said monitors by updating said specified monitor to said Signaled status, updating said specified monitors epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled, and updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one; and performing a wait operation by blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled, said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution began performing said wait operation, and said tickets information indicates a non-zero tickets value, and then decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 17
Dependent Claim 248 words
In a computer system having a data processing unit, memory, and a multitasking operating system that supports multiple threads of execution in a shared address space, a method of operating the computer system, comprising the steps of: providing at least one monitor, stored in said memory, that has an associated event data structure denoting the status of said monitor as Signaled or Unsignaled, each monitor further storing waiters information indicating how many threads are waiting on said monitor, tickets information indicating how many of said waiting threads are to receive notifications, and epoch information; performing a notify operation on any specified one of said monitors by updating said specified monitor to said Signaled status, updating said specified monitors epoch information to indicate an epoch value associated with said updating of said specified monitor's status to Signaled, and updating said specified monitor's tickets information to indicate that a number of threads are to receive notifications, where said number of threads is at least one; and performing a wait operation by blocking execution of any calling thread of execution until a specified monitor's status is updated to Signaled, said specified monitor's epoch information indicates an epoch value distinct from a starting epoch value comprising said epoch value when said calling thread of execution began performing said wait operation, and said tickets information indicates a non-zero tickets value, and then decrementing said tickets value to indicate that said calling thread of execution has consumed one ticket associated with said specified monitor.
Claim 18
Dependent Claim 28 words
The method of claim 13, said step of performing a wait operation including releasing ownership of said specified monitor and performing said execution blocking as an atomic operation.

References Cited (Backward Citations)

US5598562A Cited
US5625821A Cited
US5615326A Cited
US5630136A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-01-05 2001-07-07 2002-01-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-01-05 2005-07-07 2006-01-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-01-05 2009-07-07 2010-01-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag