mutex readme updated

pull/7/head
Peter Hinch 2015-11-30 07:14:40 +00:00
rodzic a534d5ed43
commit 2697e929d0
1 zmienionych plików z 44 dodań i 3 usunięć

Wyświetl plik

@ -1,7 +1,48 @@
# mutex.py mutex_test.py
# A very simple mutex class.
Implementation of a very simple mutex class
Files mutex.py mutex_test.py
A mutex is an object enabling threads of execution to protect critical sections of code from reentrancy
or to temporarily protect critical data sets from being updated by other threads. The term "mutex"
derives from the notion of mutual exclusion. A mutex usually provides three methods:
lock() (POSIX pthread_mutex_lock): wait until the mutex is free, then lock it
unlock() (POSIX pthread_mutex_unlock): Immediate return. unlock the mutex.
test() (POSIX pthread_mutex_trylock): Immediate return. test if it is locked.
[reference](http://www.geeksforgeeks.org/mutex-vs-semaphore/)
In this implementation lock and unlock is controlled by a context manager.
In the context of MicroPython a mutex provides a mechanism where an interrupt service routine (ISR) can
test whether the main loop was using critical variables at the time the interrupt occurred, and if so
avoid modifying those variables. Typical use is as follows:
```python
import pyb, mutex
mutex = mutex.Mutex()
data_ready = False
def callback(): # Timer or interrupt callback
if mutex.test():
data_ready = True
# Update critical variables
else:
# defer any update
# Associate callback with device (pin or timer)
while True:
# code
if data_ready:
with mutex:
data_ready = False
# Access critical variables
# more code
```
Note that the ``with`` statement will execute immediately because no other process runs a ``with`` block
on the same mutex instance.
[Linux man page](http://linux.die.net/man/3/pthread_mutex_lock)
References describing mutex and semaphore objects
[geeksforgeeks](http://www.geeksforgeeks.org/mutex-vs-semaphore/)
[stackoverflow](http://stackoverflow.com/questions/62814/difference-between-binary-semaphore-and-mutex)
[differencebetween](http://www.differencebetween.net/language/difference-between-mutex-and-semaphore/)