An a wrapper for :func:`.critical_section_dynamic_lock` function call, but uses a static lock object
	instead of a function that returns a lock with which a function protection will be made

	:param lock: lock with which a function will be protected
	:param blocking: same as blocking in :func:`.critical_section_dynamic_lock` function
	:param timeout: same as timeout in :func:`.critical_section_dynamic_lock` function
	:param raise_exception: same as raise_exception in :func:`.critical_section_dynamic_lock` function

	:return: decorator with which a target function may be protected

def critical_section_lock(lock=None, blocking=True, timeout=None, raise_exception=True):
	""" An a wrapper for :func:`.critical_section_dynamic_lock` function call, but uses a static lock object
	instead of a function that returns a lock with which a function protection will be made

	:param lock: lock with which a function will be protected
	:param blocking: same as blocking in :func:`.critical_section_dynamic_lock` function
	:param timeout: same as timeout in :func:`.critical_section_dynamic_lock` function
	:param raise_exception: same as raise_exception in :func:`.critical_section_dynamic_lock` function

	:return: decorator with which a target function may be protected
	"""

	def lock_getter(*args, **kwargs):
		return lock

	return critical_section_dynamic_lock(
		lock_fn=lock_getter, blocking=blocking, timeout=timeout, raise_exception=raise_exception
	)