2

通常的python线程和greenthread(eventlet)中的行为threading.Lock()之间有什么区别吗?threading.Semaphore()

4

1 回答 1

3

行为没有区别。但是,绿色线程实际上并不是线程,因为它在单个操作系统线程中运行其所有任务,因此threading.Lock和的threading.Semaphore行为就像是从单个线程锁定和解锁一样。

这意味着如果您在使用绿色线程时尝试获取锁定的锁或归零的信号量,那么整个程序将永远阻塞(或直到指定的超时)。此外,RLock 只能从它被锁定的同一个线程中释放,因为绿色线程实际上都在同一个线程上运行,您将能够从不同的绿色线程中释放 RLock。

简而言之,threading使用绿色线程时不要使用锁。

于 2014-02-09T22:35:26.773 回答