Summary
attempts to set a semaphore.
- Assembly
- Db4objects
.Db4o-2010 .dll - Namespace
- Db4objects
.Db4o .Ext - Containing Type
- IExtObjectContainer
Syntax
bool SetSemaphore(string name, int waitForAvailability)
Remarks
attempts to set a semaphore.
Semaphores are transient multi-purpose named flags for
A transaction that successfully sets a semaphore becomes the owner of the semaphore. Semaphores can only be owned by a single transaction at one point in time.
This method returns true, if the transaction already owned the semaphore before the method call or if it successfully acquires ownership of the semaphore.
The waitForAvailability parameter allows to specify a time in milliseconds to wait for other transactions to release the semaphore, in case the semaphore is already owned by another transaction.
Semaphores are released by the first occurrence of one of the following:
- the transaction releases the semaphore with
- the transaction is closed with
- C/S only: the corresponding
- C/S only: the client
Semaphores are set immediately. They are independant of calling
Possible use cases for semaphores:
- prevent other clients from inserting a singleton at the same time. A suggested name for the semaphore: "SINGLETON_" + Object#getClass().getName().
- lock objects. A suggested name: "LOCK_" +
- generate a unique client ID. A suggested name: "CLIENT_" + System.currentTimeMillis().
Semaphores are transient multi-purpose named flags for
Db4objects.Db4o.IObjectContainer
.
A transaction that successfully sets a semaphore becomes the owner of the semaphore. Semaphores can only be owned by a single transaction at one point in time.
This method returns true, if the transaction already owned the semaphore before the method call or if it successfully acquires ownership of the semaphore.
The waitForAvailability parameter allows to specify a time in milliseconds to wait for other transactions to release the semaphore, in case the semaphore is already owned by another transaction.
Semaphores are released by the first occurrence of one of the following:
- the transaction releases the semaphore with
Db4objects.Db4o.Ext.IExtObjectContainer.ReleaseSemaphore(System.String)
- the transaction is closed with
Db4objects.Db4o.IObjectContainer.Close
- C/S only: the corresponding
Db4objects.Db4o.IObjectServer
is
closed.- C/S only: the client
Db4objects.Db4o.IObjectContainer
looses the connection and is timed
out.Semaphores are set immediately. They are independant of calling
Db4objects.Db4o.IObjectContainer.Commit
or
Db4objects.Db4o.IObjectContainer.Rollback
.Possible use cases for semaphores:
- prevent other clients from inserting a singleton at the same time. A suggested name for the semaphore: "SINGLETON_" + Object#getClass().getName().
- lock objects. A suggested name: "LOCK_" +
Db4objects.Db4o.Ext.IExtObjectContainer.GetID(System.Object)
- generate a unique client ID. A suggested name: "CLIENT_" + System.currentTimeMillis().
Parameters
Name | Type | Description |
---|---|---|
name | string | the name of the semaphore to be set |
waitForAvailability | int | the time in milliseconds to wait for other transactions to release the semaphore. The parameter may be zero, if the method is to return immediately. |
Return Value
Type | Description |
---|---|
bool |
boolean flag
true, if the semaphore could be set or if the calling transaction already owned the semaphore. false, if the semaphore is owned by another transaction. |