2014-02-09 8 views

답변

2

동작에 차이가 없습니다. 그러나 녹색 스레드는 단일 스레드에서 모든 작업을 실행하므로 실제로는 스레드가 아니므로 threading.Lockthreading.Semaphore은 단일 스레드에서 잠기거나 잠금 해제 된 것처럼 동작합니다.

녹색 스레드를 사용할 때 잠긴 잠금 또는 제로 세마포를 얻으려고하면 전체 프로그램이 영원히 (또는 지정된 시간 초과까지) 차단됩니다. 또한, 녹색 스레드가 실제로 동일한 스레드에서 실행되므로 다른 녹색 스레드에서 RLock을 해제 할 수 있기 때문에, 잠긴 스레드에서만 RLock을 릴리스 할 수 있습니다.

요약하면 녹색 스레드를 사용할 때는 threading 잠금을 사용하지 마십시오.

+0

답변 해 주셔서 감사합니다. 그렇다면 녹색 스레드 환경에 대한 Lock 대안은 무엇입니까? –

+1

대안은 컨텍스트 전환이 발생하는시기를 정확하게 제어 할 수 있으므로 이벤트 처리 프로그램은 일반적으로 처리 과정에서 프로그램이 서로 밟히는 것을 방지하기 위해 잠금을 필요로하지 않기 때문에 잠금 필요성을 피하는 것입니다. 이벤트 릿에 대한 참고로 표준 라이브러리를 원숭이 패치 할 수도 있습니다.이 라이브러리는 스레딩 모듈의 잠금을 이벤트 릿 잠금으로 대체합니다. 이벤트 릿 잠금은 해당 스레드 잠금과 비슷한 동작을 구현하지만 스레드가 생성되어 문맥 전환을 유발할 수도 있습니다. –

+0

아 맞아! 우리는 원숭이 패치도 사용하고 있습니다! 따라서 원숭이 패치를 사용하면 자물쇠를 사용하는 것이 안전합니다. 맞습니까? –