下午考并行计算了,一直对这几个概念比较模糊,区分的不太开。将找到的资料帖上来,以后可以提醒一下自己。
1. A lock allows only one thread to enter the part thats locked and the lock is not shared with any other processes , a mutex is the same as a lock but system wide and a semaphore does the same as a lock but allows x number of threads to enter...
==========================================================
原文链接:http://koti.mbnet.fi/niclasw/MutexSemaphore.html
2.
Mutex:
Is a key to a toilet. One person can have the key - occupy the toilet - at the time. When finished, the person gives (frees) the key to the next person in the queue.
Officially: "Mutexes are typically used to serialise access to a section of re-entrant code that cannot be executed concurrently by more than one thread. A mutex object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that section to wait until the first thread has exited from that section."
Ref: Symbian Developer Library
(A mutex is really a semaphore with value 1.)
Semaphore:
Is the number of free identical toilet keys. Example, say we have four toilets with identical locks and keys. The semaphore count - the count of keys - is set to 4 at beginning (all four toilets are free), then the count value is decremented as people are coming in. If all toilets are full, ie. there are no free keys left, the semaphore count is 0. Now, when eq. one person leaves the toilet, semaphore is increased to 1 (one free key), and given to the next person in the queue.
Officially: "A semaphore restricts the number of simultaneous users of a shared resource up to a maximum number. Threads can request access to the resource (decrementing the semaphore), and can signal that they have finished using the resource (incrementing the semaphore)."
Ref: Symbian Developer Library
=========================================================
3.原文链接:http://www.allinterview.com/showanswers/75092.html
这里讲的spinlock和lock是不一样的概念。
Kernel Locking Techniques |