mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-04-23 15:44:44 +00:00
own locking class, avoiding multiple acquire/releases
git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@2391 e7d03fd6-7b0d-0410-9947-9c21f3af8025
This commit is contained in:
parent
8b8403c32e
commit
4d0d76446f
1 changed files with 43 additions and 0 deletions
43
linkcheck/lock.py
Normal file
43
linkcheck/lock.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# Copyright (C) 2005 Bastian Kleineidam
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
"""
|
||||
Locking utility class.
|
||||
"""
|
||||
|
||||
try:
|
||||
import threading
|
||||
except ImportError:
|
||||
import dummy_threading as threading
|
||||
|
||||
lock_klass = threading.RLock().__class__
|
||||
|
||||
class AssertLock (lock_klass):
|
||||
|
||||
def acquire (self, blocking=True):
|
||||
"""
|
||||
Acquire lock.
|
||||
"""
|
||||
assert not self._is_owned(), "deadlock"
|
||||
super(AssertLock, self).acquire(blocking=blocking)
|
||||
|
||||
def release (self):
|
||||
"""
|
||||
Release lock.
|
||||
"""
|
||||
assert self._is_owned(), "double release"
|
||||
super(AssertLock, self).release()
|
||||
|
||||
Loading…
Reference in a new issue