Comment mettre en œuvre une Serrure avec un délai d'attente dans Python 2.7

Est-il un moyen de mettre en œuvre une serrure en Python pour le multithreading fins dont acquire méthode peut avoir l'arbitraire d'un délai d'attente? Les seules solutions que j'ai trouvé jusqu'à présent l'utilisation d'interrogation, ce qui

  • Je trouve inélégant et inefficace
  • Ne préserve pas le délimitée d'attente /progrès de garantie de la serrure comme une solution au problème de la section critique

Est-il une meilleure façon de mettre en œuvre cette?

  • Vous voudrez peut-être un threading.Condition objet (voir la section docs.python.org/library/threading.html#threading.Condition). La Condition de l'objet encapsule une serrure et a un wait méthode avec un délai d'attente. L'attente est interrompue lorsqu'il arrive à expiration ou lorsque notify est appelée sur l'État de l'objet.
  • Je ne suis pas sûr si c'est une solution à mon problème. Selon les docs et à partir d'un rapide coup d'œil au code source, j'ai pensé que threading.Condition juste enroule une threading.RLock objet. Avant d'appeler wait vous devez acquire le sous-jacent de Verrouillage. En dehors de cela, il semble que wait est mis en œuvre à l'aide d'une boucle occupée. Suis-je manqué quelque chose?
InformationsquelleAutor Niklas B. | 2011-12-05