| 183 | } |
| 184 | |
| 185 | void sim_lock_provider::unlock() |
| 186 | { |
| 187 | // ignore locks inside schedulers |
| 188 | if (scheduler::is_scheduling()) |
| 189 | return; |
| 190 | |
| 191 | CHECK_EQ_MSG(::dsn::utils::get_current_tid(), |
| 192 | _current_holder, |
| 193 | "lock must be locked must current holder"); |
| 194 | |
| 195 | if (0 == --_lock_depth) { |
| 196 | _current_holder = -1; |
| 197 | _sema.signal(1); |
| 198 | } else { |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | sim_lock_nr_provider::sim_lock_nr_provider(lock_nr_provider *inner_provider) |
| 203 | : lock_nr_provider(inner_provider), _sema(1, nullptr) |