(self, key, createfunc, *args, **kwargs)
| 107 | return self.sync_get(key, createfunc, *args, **kwargs) |
| 108 | |
| 109 | def sync_get(self, key, createfunc, *args, **kwargs): |
| 110 | self.mutex.acquire() |
| 111 | try: |
| 112 | try: |
| 113 | if self.has_key(key): |
| 114 | return self.dict[key] |
| 115 | else: |
| 116 | return self._create(key, createfunc, *args, **kwargs) |
| 117 | except KeyError: |
| 118 | return self._create(key, createfunc, *args, **kwargs) |
| 119 | finally: |
| 120 | self.mutex.release() |
| 121 | |
| 122 | def _create(self, key, createfunc, *args, **kwargs): |
| 123 | self[key] = obj = createfunc(*args, **kwargs) |