Mutual exclusion synchronization tool

Instances of this class can only be acquired by a single thread at any one point in time. Uses the recursive protocol so they can be locked many time by the same thread, must then be unlocked as many time.

Introduced properties

fun lock

pthreads :: Mutex :: lock

Acquire this lock, wait until it is available
fun try_lock: Bool

pthreads :: Mutex :: try_lock

Acquire this lock only if it is available
fun unlock

pthreads :: Mutex :: unlock

Release this lock, unblocking all callers of lock

Redefined properties

redef type SELF: Mutex

pthreads $ Mutex :: SELF

Type of this instance, automatically specialized in every class
redef fun finalize

pthreads $ Mutex :: finalize

Liberate any resources held by self before the memory holding self is freed
redef init init

pthreads $ Mutex :: init

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun finalize

core :: Finalizable :: finalize

Liberate any resources held by self before the memory holding self is freed
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun lock

pthreads :: Mutex :: lock

Acquire this lock, wait until it is available
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun try_lock: Bool

pthreads :: Mutex :: try_lock

Acquire this lock only if it is available
fun unlock

pthreads :: Mutex :: unlock

Release this lock, unblocking all callers of lock
package_diagram pthreads::Mutex Mutex core::Finalizable Finalizable pthreads::Mutex->core::Finalizable core::Object Object core::Finalizable->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

class Finalizable

core :: Finalizable

An object needing finalization

Class definitions

pthreads $ Mutex
# Mutual exclusion synchronization tool
#
# Instances of this class can only be acquired by a single thread at any one
# point in time. Uses the recursive protocol so they can be locked many time by
# the same thread, must then be unlocked as many time.
class Mutex
	super Finalizable

	private var native: nullable NativePthreadMutex is noinit

	init
	do
		var attr = new NativePthreadMutexAttr
		attr.set_type_recursive
		native = new NativePthreadMutex(attr)
		attr.destroy
		attr.free
	end

	# Acquire this lock, wait until it is available
	fun lock do native.lock

	# Acquire this lock only if it is available
	#
	# Returns `true` if the lock has been acquired.
	fun try_lock: Bool do return native.try_lock

	# Release this lock, unblocking all callers of `lock`
	fun unlock do native.unlock

	redef fun finalize
	do
		var native = self.native
		if native != null then
			native.destroy
			native.free
		end
		self.native = null
	end
end
lib/pthreads/pthreads.nit:385,1--424,3