/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: set ts=8 sts=2 et sw=2 tw=80: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
void setBitAndCheck(CounterAndBit* counterAndBit) { while (true) {
{ // Set our bit. Repeatedly setting it is idempotent. auto guard = counterAndBit->counter.lock();
printDiagnosticMessage(counterAndBit->bit, guard);
guard |= (uint64_t(1) << counterAndBit->bit);
}
{ // Check to see if we have observed all the other threads setting // their bit as well. auto guard = counterAndBit->counter.lock();
printDiagnosticMessage(counterAndBit->bit, guard); if (guard == UINT64_MAX) {
js_delete(counterAndBit); return;
}
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.