mfs

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2021 License: MIT Imports: 5 Imported by: 11

README

mfs

golang mfs - additional sync structs ant methods

mfs.RWTMutex - Read Write Try Mutex

mfs.RWTMutex is like sync.RWMutex

mx := mfs.RWTMutex{}
mx.Lock()
// DO Something
mx.Unlock()

and mfs.RWTMutex contains TryLock

// ctx - sime context
ctx := context.Background()
mx := mfs.RWTMutex{}
isLocked := mx.TryLock(ctx)
if isLocked {
    // DO Something
    mx.Unlock()
} else {
    // DO Something else
}

mfs.PMutex - Read Write Try Mutex with change priority (Promote and Reduce)

mfs.PMutex is like sync.RWMutex
mfs.PMutex is like mfs.RWTMutex

Reduce - lock mutex from Lock to RLock
mx := mfs.RWTMutex{}
mx.Lock()
// DO Something
mx.Reduce()
// Now mutex like RLock()
// DO Something
mx.RUnlock()
Promote - lock mutex from RLock to Lock
mx := mfs.RWTMutex{}
mx.RLock()
// DO Something
mx.Promote()
// Now mutex like Lock()
// DO Something
mx.Unlock()
TryPromote - lock mutex from RLock to Lock
// ctx is some context
mx := mfs.RWTMutex{}
mx.RLock()
// DO Something
isLocked := mx.TryPromote()
if isLocked {
    // Now mutex like Lock()
    // DO Something
    mx.Unlock()
} else {
    // Mutex is not locked (like call mx.RUnlock())
    // DO Something else
}

F methods (PromoteF, TryPromoteF, LockF, TryLockF, RLockF, RTryLockF)

It should be locked befor regular methods like Lock or Promote are

Me

Ilya Shcherbina
+7(903)192-4239
sch@myfantasy.ru

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MapMutex added in v0.1.3

type MapMutex struct {
	// contains filtered or unexported fields
}

MapMutex - Mutex is named (each name locks independently) Read Write Try Mutex with change priority (Promote and Reduce) F methods (like LockF and TryLockF) Locks mutex if mutex already locked then this methods will be first in lock queue Promote - lock mutex from RLock to Lock Reduce - lock mutex from Lock to RLock

func (*MapMutex) DoGlobal added in v0.1.3

func (m *MapMutex) DoGlobal(do func())

DoGlobal - do some action under global lock

func (*MapMutex) GetMutex added in v0.1.3

func (m *MapMutex) GetMutex(name string) *PMutex

GetMutex - gets PMutex from MapMutex by name

func (*MapMutex) Lock added in v0.1.3

func (m *MapMutex) Lock(name string)

Lock - locks mutex

func (*MapMutex) LockD added in v0.1.3

func (m *MapMutex) LockD(d time.Duration, name string) bool

LockD - try locks mutex with time duration

func (*MapMutex) LockDF added in v0.1.3

func (m *MapMutex) LockDF(d time.Duration, name string) bool

LockDF - try locks mutex with time duration first (out of turn)

func (*MapMutex) LockF added in v0.1.3

func (m *MapMutex) LockF(name string)

LockF - locks mutex first (out of turn)

func (*MapMutex) Promote added in v0.1.3

func (m *MapMutex) Promote(name string)

Promote - lock mutex from RLock to Lock

func (*MapMutex) PromoteD added in v0.1.3

func (m *MapMutex) PromoteD(d time.Duration, name string) bool

PromoteD - try locks mutex from RLock to Lock with time duration !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*MapMutex) PromoteDF added in v0.1.3

func (m *MapMutex) PromoteDF(d time.Duration, name string) bool

PromoteDF - try locks mutex from RLock to Lock with time duration first (out of turn) !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*MapMutex) PromoteF added in v0.1.3

func (m *MapMutex) PromoteF(name string)

PromoteF - lock mutex from RLock to Lock first (out of turn)

func (*MapMutex) RLock added in v0.1.3

func (m *MapMutex) RLock(name string)

RLock - read locks mutex

func (*MapMutex) RLockD added in v0.1.3

func (m *MapMutex) RLockD(d time.Duration, name string) bool

RLockD - try read locks mutex with time duration

func (*MapMutex) RLockDF added in v0.1.3

func (m *MapMutex) RLockDF(d time.Duration, name string) bool

RLockDF - try read locks mutex with time duration first (out of turn)

func (*MapMutex) RLockF added in v0.1.3

func (m *MapMutex) RLockF(name string)

RLockF - read locks mutex first (out of turn)

func (*MapMutex) RTryLock added in v0.1.3

func (m *MapMutex) RTryLock(ctx context.Context, name string) bool

RTryLock - try read locks mutex with context

func (*MapMutex) RTryLockF added in v0.1.3

func (m *MapMutex) RTryLockF(ctx context.Context, name string) bool

RTryLockF - try read locks mutex with context first (out of turn)

func (*MapMutex) RUnlock added in v0.1.3

func (m *MapMutex) RUnlock(name string)

RUnlock - unlocks mutex

func (*MapMutex) Reduce added in v0.1.3

func (m *MapMutex) Reduce(name string)

Reduce - lock mutex from Lock to RLock

func (*MapMutex) TryLock added in v0.1.3

func (m *MapMutex) TryLock(ctx context.Context, name string) bool

TryLock - try locks mutex with context

func (*MapMutex) TryLockF added in v0.1.3

func (m *MapMutex) TryLockF(ctx context.Context, name string) bool

TryLockF - try locks mutex with context first (out of turn)

func (*MapMutex) TryPromote added in v0.1.3

func (m *MapMutex) TryPromote(ctx context.Context, name string) bool

TryPromote - try locks mutex from RLock to Lock with context !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*MapMutex) TryPromoteF added in v0.1.3

func (m *MapMutex) TryPromoteF(ctx context.Context, name string) bool

TryPromoteF - try locks mutex from RLock to Lock with context first (out of turn) !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*MapMutex) Unlock added in v0.1.3

func (m *MapMutex) Unlock(name string)

Unlock - unlocks mutex

type PMutex added in v0.1.0

type PMutex struct {
	// contains filtered or unexported fields
}

PMutex - Read Write Try Mutex with change priority (Promote and Reduce) F methods (like LockF and TryLockF) Locks mutex if mutex already locked then this methods will be first in lock queue Promote - lock mutex from RLock to Lock Reduce - lock mutex from Lock to RLock

func (*PMutex) Lock added in v0.1.0

func (m *PMutex) Lock()

Lock - locks mutex

func (*PMutex) LockD added in v0.1.0

func (m *PMutex) LockD(d time.Duration) bool

LockD - try locks mutex with time duration

func (*PMutex) LockDF added in v0.1.0

func (m *PMutex) LockDF(d time.Duration) bool

LockDF - try locks mutex with time duration first (out of turn)

func (*PMutex) LockF added in v0.1.0

func (m *PMutex) LockF()

LockF - locks mutex first (out of turn)

func (*PMutex) Promote added in v0.1.0

func (m *PMutex) Promote()

Promote - lock mutex from RLock to Lock

func (*PMutex) PromoteD added in v0.1.0

func (m *PMutex) PromoteD(d time.Duration) bool

PromoteD - try locks mutex from RLock to Lock with time duration !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*PMutex) PromoteDF added in v0.1.0

func (m *PMutex) PromoteDF(d time.Duration) bool

PromoteDF - try locks mutex from RLock to Lock with time duration first (out of turn) !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*PMutex) PromoteF added in v0.1.0

func (m *PMutex) PromoteF()

PromoteF - lock mutex from RLock to Lock first (out of turn)

func (*PMutex) RLock added in v0.1.0

func (m *PMutex) RLock()

RLock - read locks mutex

func (*PMutex) RLockD added in v0.1.0

func (m *PMutex) RLockD(d time.Duration) bool

RLockD - try read locks mutex with time duration

func (*PMutex) RLockDF added in v0.1.0

func (m *PMutex) RLockDF(d time.Duration) bool

RLockDF - try read locks mutex with time duration first (out of turn)

func (*PMutex) RLockF added in v0.1.0

func (m *PMutex) RLockF()

RLockF - read locks mutex first (out of turn)

func (*PMutex) RTryLock added in v0.1.0

func (m *PMutex) RTryLock(ctx context.Context) bool

RTryLock - try read locks mutex with context

func (*PMutex) RTryLockF added in v0.1.0

func (m *PMutex) RTryLockF(ctx context.Context) bool

RTryLockF - try read locks mutex with context first (out of turn)

func (*PMutex) RUnlock added in v0.1.0

func (m *PMutex) RUnlock()

RUnlock - unlocks mutex

func (*PMutex) Reduce added in v0.1.0

func (m *PMutex) Reduce()

Reduce - lock mutex from Lock to RLock

func (*PMutex) TryLock added in v0.1.0

func (m *PMutex) TryLock(ctx context.Context) bool

TryLock - try locks mutex with context

func (*PMutex) TryLockF added in v0.1.0

func (m *PMutex) TryLockF(ctx context.Context) bool

TryLockF - try locks mutex with context first (out of turn)

func (*PMutex) TryPromote added in v0.1.0

func (m *PMutex) TryPromote(ctx context.Context) bool

TryPromote - try locks mutex from RLock to Lock with context !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*PMutex) TryPromoteF added in v0.1.0

func (m *PMutex) TryPromoteF(ctx context.Context) bool

TryPromoteF - try locks mutex from RLock to Lock with context first (out of turn) !!! If returns false then mutex is UNLOCKED if true mutex is locked as Lock

func (*PMutex) Unlock added in v0.1.0

func (m *PMutex) Unlock()

Unlock - unlocks mutex

type RWTMutex

type RWTMutex struct {
	// contains filtered or unexported fields
}

RWTMutex - Read Write and Try Mutex

func (*RWTMutex) Lock

func (m *RWTMutex) Lock()

Lock - locks mutex

func (*RWTMutex) LockD

func (m *RWTMutex) LockD(d time.Duration) bool

LockD - try locks mutex with time duration

func (*RWTMutex) RLock

func (m *RWTMutex) RLock()

RLock - read locks mutex

func (*RWTMutex) RLockD

func (m *RWTMutex) RLockD(d time.Duration) bool

RLockD - try read locks mutex with time duration

func (*RWTMutex) RTryLock

func (m *RWTMutex) RTryLock(ctx context.Context) bool

RTryLock - try read locks mutex with context

func (*RWTMutex) RUnlock

func (m *RWTMutex) RUnlock()

RUnlock - unlocks mutex

func (*RWTMutex) Reduce added in v0.2.0

func (m *RWTMutex) Reduce()

Reduce - lock mutex from Lock to RLock

func (*RWTMutex) TryLock

func (m *RWTMutex) TryLock(ctx context.Context) bool

TryLock - try locks mutex with context

func (*RWTMutex) Unlock

func (m *RWTMutex) Unlock()

Unlock - unlocks mutex

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL