Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
7e6d18c1
Commit
7e6d18c1
authored
Apr 29, 1998
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace all calls to acquire_lock() and release_lock() with acquire()
and release() instead.
parent
268397f5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
25 deletions
+25
-25
Lib/Queue.py
Lib/Queue.py
+25
-25
No files found.
Lib/Queue.py
View file @
7e6d18c1
...
...
@@ -19,28 +19,28 @@ class Queue:
self
.
_init
(
maxsize
)
self
.
mutex
=
thread
.
allocate_lock
()
self
.
esema
=
thread
.
allocate_lock
()
self
.
esema
.
acquire
_lock
()
self
.
esema
.
acquire
()
self
.
fsema
=
thread
.
allocate_lock
()
def
qsize
(
self
):
"""Returns the approximate size of the queue (not reliable!)."""
self
.
mutex
.
acquire
_lock
()
self
.
mutex
.
acquire
()
n
=
self
.
_qsize
()
self
.
mutex
.
release
_lock
()
self
.
mutex
.
release
()
return
n
def
empty
(
self
):
"""Returns 1 if the queue is empty, 0 otherwise (not reliable!)."""
self
.
mutex
.
acquire
_lock
()
self
.
mutex
.
acquire
()
n
=
self
.
_empty
()
self
.
mutex
.
release
_lock
()
self
.
mutex
.
release
()
return
n
def
full
(
self
):
"""Returns 1 if the queue is full, 0 otherwise (not reliable!)."""
self
.
mutex
.
acquire
_lock
()
self
.
mutex
.
acquire
()
n
=
self
.
_full
()
self
.
mutex
.
release
_lock
()
self
.
mutex
.
release
()
return
n
def
put
(
self
,
item
):
...
...
@@ -48,30 +48,30 @@ class Queue:
If the queue is full, block until a free slot is avaiable.
"""
self
.
fsema
.
acquire
_lock
()
self
.
mutex
.
acquire
_lock
()
self
.
fsema
.
acquire
()
self
.
mutex
.
acquire
()
was_empty
=
self
.
_empty
()
self
.
_put
(
item
)
if
was_empty
:
self
.
esema
.
release
_lock
()
self
.
esema
.
release
()
if
not
self
.
_full
():
self
.
fsema
.
release
_lock
()
self
.
mutex
.
release
_lock
()
self
.
fsema
.
release
()
self
.
mutex
.
release
()
def
get
(
self
):
"""Gets and returns an item from the queue.
This method blocks if necessary until an item is available.
"""
self
.
esema
.
acquire
_lock
()
self
.
mutex
.
acquire
_lock
()
self
.
esema
.
acquire
()
self
.
mutex
.
acquire
()
was_full
=
self
.
_full
()
item
=
self
.
_get
()
if
was_full
:
self
.
fsema
.
release
_lock
()
self
.
fsema
.
release
()
if
not
self
.
_empty
():
self
.
esema
.
release
_lock
()
self
.
mutex
.
release
_lock
()
self
.
esema
.
release
()
self
.
mutex
.
release
()
return
item
# Get an item from the queue if one is immediately available,
...
...
@@ -83,27 +83,27 @@ class Queue:
this raises the Empty exception if the queue is empty or
temporarily unavailable.
"""
locked
=
self
.
esema
.
acquire
_lock
(
0
)
self
.
mutex
.
acquire
_lock
()
locked
=
self
.
esema
.
acquire
(
0
)
self
.
mutex
.
acquire
()
if
self
.
_empty
():
# The queue is empty -- we can't have esema
self
.
mutex
.
release
_lock
()
self
.
mutex
.
release
()
raise
Empty
if
not
locked
:
locked
=
self
.
esema
.
acquire
_lock
(
0
)
locked
=
self
.
esema
.
acquire
(
0
)
if
not
locked
:
# Somebody else has esema
# but we have mutex --
# go out of their way
self
.
mutex
.
release
_lock
()
self
.
mutex
.
release
()
raise
Empty
was_full
=
self
.
_full
()
item
=
self
.
_get
()
if
was_full
:
self
.
fsema
.
release
_lock
()
self
.
fsema
.
release
()
if
not
self
.
_empty
():
self
.
esema
.
release
_lock
()
self
.
mutex
.
release
_lock
()
self
.
esema
.
release
()
self
.
mutex
.
release
()
return
item
# XXX Need to define put_nowait() as well.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment