mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
[doc] Add a note about where lock annotations should go.
This commit is contained in:
parent
ad5f01b960
commit
25c57d6409
3 changed files with 18 additions and 3 deletions
|
@ -785,6 +785,11 @@ Threads and synchronization
|
||||||
get compile-time warnings about potential race conditions in code. Combine annotations in function declarations with
|
get compile-time warnings about potential race conditions in code. Combine annotations in function declarations with
|
||||||
run-time asserts in function definitions:
|
run-time asserts in function definitions:
|
||||||
|
|
||||||
|
- In functions that are declared separately from where they are defined, the
|
||||||
|
thread safety annotations should be added exclusively to the function
|
||||||
|
declaration. Annotations on the definition could lead to false positives
|
||||||
|
(lack of compile failure) at call sites between the two.
|
||||||
|
|
||||||
```C++
|
```C++
|
||||||
// txmempool.h
|
// txmempool.h
|
||||||
class CTxMemPool
|
class CTxMemPool
|
||||||
|
|
|
@ -13,7 +13,10 @@
|
||||||
|
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
|
||||||
|
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
|
||||||
|
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
|
||||||
|
std::vector<CScriptCheck>* pvChecks) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE(txvalidationcache_tests)
|
BOOST_AUTO_TEST_SUITE(txvalidationcache_tests)
|
||||||
|
|
||||||
|
|
|
@ -198,7 +198,11 @@ CBlockIndex* BlockManager::FindForkInGlobalIndex(const CChain& chain, const CBlo
|
||||||
|
|
||||||
std::unique_ptr<CBlockTreeDB> pblocktree;
|
std::unique_ptr<CBlockTreeDB> pblocktree;
|
||||||
|
|
||||||
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
|
||||||
|
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
|
||||||
|
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
|
||||||
|
std::vector<CScriptCheck>* pvChecks = nullptr)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
static FILE* OpenUndoFile(const FlatFilePos &pos, bool fReadOnly = false);
|
static FILE* OpenUndoFile(const FlatFilePos &pos, bool fReadOnly = false);
|
||||||
static FlatFileSeq BlockFileSeq();
|
static FlatFileSeq BlockFileSeq();
|
||||||
static FlatFileSeq UndoFileSeq();
|
static FlatFileSeq UndoFileSeq();
|
||||||
|
@ -1450,7 +1454,10 @@ void InitScriptExecutionCache() {
|
||||||
*
|
*
|
||||||
* Non-static (and re-declared) in src/test/txvalidationcache_tests.cpp
|
* Non-static (and re-declared) in src/test/txvalidationcache_tests.cpp
|
||||||
*/
|
*/
|
||||||
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks)
|
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
|
||||||
|
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
|
||||||
|
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
|
||||||
|
std::vector<CScriptCheck>* pvChecks)
|
||||||
{
|
{
|
||||||
if (tx.IsCoinBase()) return true;
|
if (tx.IsCoinBase()) return true;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue